153289f6aSNate Lawson 253289f6aSNate Lawson /****************************************************************************** 353289f6aSNate Lawson * 453289f6aSNate Lawson * Module Name: aslmain - compiler main and utilities 51a39cfb0SJung-uk Kim * $Revision: 1.96 $ 653289f6aSNate Lawson * 753289f6aSNate Lawson *****************************************************************************/ 853289f6aSNate Lawson 953289f6aSNate Lawson /****************************************************************************** 1053289f6aSNate Lawson * 1153289f6aSNate Lawson * 1. Copyright Notice 1253289f6aSNate Lawson * 131a39cfb0SJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp. 1453289f6aSNate Lawson * All rights reserved. 1553289f6aSNate Lawson * 1653289f6aSNate Lawson * 2. License 1753289f6aSNate Lawson * 1853289f6aSNate Lawson * 2.1. This is your license from Intel Corp. under its intellectual property 1953289f6aSNate Lawson * rights. You may have additional license terms from the party that provided 2053289f6aSNate Lawson * you this software, covering your right to use that party's intellectual 2153289f6aSNate Lawson * property rights. 2253289f6aSNate Lawson * 2353289f6aSNate Lawson * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 2453289f6aSNate Lawson * copy of the source code appearing in this file ("Covered Code") an 2553289f6aSNate Lawson * irrevocable, perpetual, worldwide license under Intel's copyrights in the 2653289f6aSNate Lawson * base code distributed originally by Intel ("Original Intel Code") to copy, 2753289f6aSNate Lawson * make derivatives, distribute, use and display any portion of the Covered 2853289f6aSNate Lawson * Code in any form, with the right to sublicense such rights; and 2953289f6aSNate Lawson * 3053289f6aSNate Lawson * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 3153289f6aSNate Lawson * license (with the right to sublicense), under only those claims of Intel 3253289f6aSNate Lawson * patents that are infringed by the Original Intel Code, to make, use, sell, 3353289f6aSNate Lawson * offer to sell, and import the Covered Code and derivative works thereof 3453289f6aSNate Lawson * solely to the minimum extent necessary to exercise the above copyright 3553289f6aSNate Lawson * license, and in no event shall the patent license extend to any additions 3653289f6aSNate Lawson * to or modifications of the Original Intel Code. No other license or right 3753289f6aSNate Lawson * is granted directly or by implication, estoppel or otherwise; 3853289f6aSNate Lawson * 3953289f6aSNate Lawson * The above copyright and patent license is granted only if the following 4053289f6aSNate Lawson * conditions are met: 4153289f6aSNate Lawson * 4253289f6aSNate Lawson * 3. Conditions 4353289f6aSNate Lawson * 4453289f6aSNate Lawson * 3.1. Redistribution of Source with Rights to Further Distribute Source. 4553289f6aSNate Lawson * Redistribution of source code of any substantial portion of the Covered 4653289f6aSNate Lawson * Code or modification with rights to further distribute source must include 4753289f6aSNate Lawson * the above Copyright Notice, the above License, this list of Conditions, 4853289f6aSNate Lawson * and the following Disclaimer and Export Compliance provision. In addition, 4953289f6aSNate Lawson * Licensee must cause all Covered Code to which Licensee contributes to 5053289f6aSNate Lawson * contain a file documenting the changes Licensee made to create that Covered 5153289f6aSNate Lawson * Code and the date of any change. Licensee must include in that file the 5253289f6aSNate Lawson * documentation of any changes made by any predecessor Licensee. Licensee 5353289f6aSNate Lawson * must include a prominent statement that the modification is derived, 5453289f6aSNate Lawson * directly or indirectly, from Original Intel Code. 5553289f6aSNate Lawson * 5653289f6aSNate Lawson * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 5753289f6aSNate Lawson * Redistribution of source code of any substantial portion of the Covered 5853289f6aSNate Lawson * Code or modification without rights to further distribute source must 5953289f6aSNate Lawson * include the following Disclaimer and Export Compliance provision in the 6053289f6aSNate Lawson * documentation and/or other materials provided with distribution. In 6153289f6aSNate Lawson * addition, Licensee may not authorize further sublicense of source of any 6253289f6aSNate Lawson * portion of the Covered Code, and must include terms to the effect that the 6353289f6aSNate Lawson * license from Licensee to its licensee is limited to the intellectual 6453289f6aSNate Lawson * property embodied in the software Licensee provides to its licensee, and 6553289f6aSNate Lawson * not to intellectual property embodied in modifications its licensee may 6653289f6aSNate Lawson * make. 6753289f6aSNate Lawson * 6853289f6aSNate Lawson * 3.3. Redistribution of Executable. Redistribution in executable form of any 6953289f6aSNate Lawson * substantial portion of the Covered Code or modification must reproduce the 7053289f6aSNate Lawson * above Copyright Notice, and the following Disclaimer and Export Compliance 7153289f6aSNate Lawson * provision in the documentation and/or other materials provided with the 7253289f6aSNate Lawson * distribution. 7353289f6aSNate Lawson * 7453289f6aSNate Lawson * 3.4. Intel retains all right, title, and interest in and to the Original 7553289f6aSNate Lawson * Intel Code. 7653289f6aSNate Lawson * 7753289f6aSNate Lawson * 3.5. Neither the name Intel nor any other trademark owned or controlled by 7853289f6aSNate Lawson * Intel shall be used in advertising or otherwise to promote the sale, use or 7953289f6aSNate Lawson * other dealings in products derived from or relating to the Covered Code 8053289f6aSNate Lawson * without prior written authorization from Intel. 8153289f6aSNate Lawson * 8253289f6aSNate Lawson * 4. Disclaimer and Export Compliance 8353289f6aSNate Lawson * 8453289f6aSNate Lawson * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 8553289f6aSNate Lawson * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 8653289f6aSNate Lawson * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 8753289f6aSNate Lawson * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 8853289f6aSNate Lawson * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 8953289f6aSNate Lawson * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 9053289f6aSNate Lawson * PARTICULAR PURPOSE. 9153289f6aSNate Lawson * 9253289f6aSNate Lawson * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 9353289f6aSNate Lawson * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 9453289f6aSNate Lawson * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 9553289f6aSNate Lawson * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 9653289f6aSNate Lawson * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 9753289f6aSNate Lawson * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 9853289f6aSNate Lawson * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 9953289f6aSNate Lawson * LIMITED REMEDY. 10053289f6aSNate Lawson * 10153289f6aSNate Lawson * 4.3. Licensee shall not export, either directly or indirectly, any of this 10253289f6aSNate Lawson * software or system incorporating such software without first obtaining any 10353289f6aSNate Lawson * required license or other approval from the U. S. Department of Commerce or 10453289f6aSNate Lawson * any other agency or department of the United States Government. In the 10553289f6aSNate Lawson * event Licensee exports any such software from the United States or 10653289f6aSNate Lawson * re-exports any such software from a foreign destination, Licensee shall 10753289f6aSNate Lawson * ensure that the distribution and export/re-export of the software is in 10853289f6aSNate Lawson * compliance with all laws, regulations, orders, or other restrictions of the 10953289f6aSNate Lawson * U.S. Export Administration Regulations. Licensee agrees that neither it nor 11053289f6aSNate Lawson * any of its subsidiaries will export/re-export any technical data, process, 11153289f6aSNate Lawson * software, or service, directly or indirectly, to any country for which the 11253289f6aSNate Lawson * United States government or any agency thereof requires an export license, 11353289f6aSNate Lawson * other governmental approval, or letter of assurance, without first obtaining 11453289f6aSNate Lawson * such license, approval or letter. 11553289f6aSNate Lawson * 11653289f6aSNate Lawson *****************************************************************************/ 11753289f6aSNate Lawson 11853289f6aSNate Lawson 11953289f6aSNate Lawson #define _DECLARE_GLOBALS 12053289f6aSNate Lawson 121fba7fc7eSJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h> 122fba7fc7eSJung-uk Kim #include <contrib/dev/acpica/acnamesp.h> 1231a39cfb0SJung-uk Kim #include <contrib/dev/acpica/actables.h> 124fba7fc7eSJung-uk Kim #include <contrib/dev/acpica/acapps.h> 12553289f6aSNate Lawson 12653289f6aSNate Lawson #ifdef _DEBUG 12753289f6aSNate Lawson #include <crtdbg.h> 12853289f6aSNate Lawson #endif 12953289f6aSNate Lawson 13053289f6aSNate Lawson #define _COMPONENT ACPI_COMPILER 13153289f6aSNate Lawson ACPI_MODULE_NAME ("aslmain") 13253289f6aSNate Lawson 13353289f6aSNate Lawson BOOLEAN AslToFile = TRUE; 13453289f6aSNate Lawson BOOLEAN DoCompile = TRUE; 13553289f6aSNate Lawson BOOLEAN DoSignon = TRUE; 13653289f6aSNate Lawson 137fba7fc7eSJung-uk Kim char hex[] = 138fba7fc7eSJung-uk Kim { 139fba7fc7eSJung-uk Kim '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' 140fba7fc7eSJung-uk Kim }; 14153289f6aSNate Lawson 142fba7fc7eSJung-uk Kim /* Local prototypes */ 143fba7fc7eSJung-uk Kim 144fba7fc7eSJung-uk Kim static void 145fba7fc7eSJung-uk Kim Options ( 146fba7fc7eSJung-uk Kim void); 147fba7fc7eSJung-uk Kim 148fba7fc7eSJung-uk Kim static void 149fba7fc7eSJung-uk Kim HelpMessage ( 150fba7fc7eSJung-uk Kim void); 151fba7fc7eSJung-uk Kim 152fba7fc7eSJung-uk Kim static void 153fba7fc7eSJung-uk Kim Usage ( 154fba7fc7eSJung-uk Kim void); 155fba7fc7eSJung-uk Kim 156fba7fc7eSJung-uk Kim static void 157fba7fc7eSJung-uk Kim AslInitialize ( 158fba7fc7eSJung-uk Kim void); 159fba7fc7eSJung-uk Kim 160fba7fc7eSJung-uk Kim static void 161fba7fc7eSJung-uk Kim AslCommandLine ( 162fba7fc7eSJung-uk Kim int argc, 163fba7fc7eSJung-uk Kim char **argv); 164fba7fc7eSJung-uk Kim 165fba7fc7eSJung-uk Kim #ifdef _DEBUG 166fba7fc7eSJung-uk Kim #include <crtdbg.h> 167fba7fc7eSJung-uk Kim #endif 16853289f6aSNate Lawson 16953289f6aSNate Lawson /******************************************************************************* 17053289f6aSNate Lawson * 17153289f6aSNate Lawson * FUNCTION: Options 17253289f6aSNate Lawson * 17353289f6aSNate Lawson * PARAMETERS: None 17453289f6aSNate Lawson * 17553289f6aSNate Lawson * RETURN: None 17653289f6aSNate Lawson * 17753289f6aSNate Lawson * DESCRIPTION: Display option help message 17853289f6aSNate Lawson * 17953289f6aSNate Lawson ******************************************************************************/ 18053289f6aSNate Lawson 181fba7fc7eSJung-uk Kim static void 18253289f6aSNate Lawson Options ( 18353289f6aSNate Lawson void) 18453289f6aSNate Lawson { 18553289f6aSNate Lawson 18653289f6aSNate Lawson printf ("General Output:\n"); 18753289f6aSNate Lawson printf (" -p <prefix> Specify filename prefix for all output files (including .aml)\n"); 18853289f6aSNate Lawson printf (" -vi Less verbose errors and warnings for use with IDEs\n"); 18953289f6aSNate Lawson printf (" -vo Enable optimization comments\n"); 19053289f6aSNate Lawson printf (" -vr Disable remarks\n"); 19153289f6aSNate Lawson printf (" -vs Disable signon\n"); 1921a39cfb0SJung-uk Kim printf (" -w<1|2|3> Set warning reporting level\n"); 19353289f6aSNate Lawson 194c8466860SMark Santcroos printf ("\nAML Output Files:\n"); 19553289f6aSNate Lawson printf (" -s<a|c> Create AML in assembler or C source file (*.asm or *.c)\n"); 19653289f6aSNate Lawson printf (" -i<a|c> Create assembler or C include file (*.inc or *.h)\n"); 19753289f6aSNate Lawson printf (" -t<a|c> Create AML in assembler or C hex table (*.hex)\n"); 19853289f6aSNate Lawson 199c8466860SMark Santcroos printf ("\nAML Code Generation:\n"); 20053289f6aSNate Lawson printf (" -oa Disable all optimizations (compatibility mode)\n"); 20153289f6aSNate Lawson printf (" -of Disable constant folding\n"); 20253289f6aSNate Lawson printf (" -oi Disable integer optimization to Zero/One/Ones\n"); 20353289f6aSNate Lawson printf (" -on Disable named reference string optimization\n"); 204c8466860SMark Santcroos printf (" -r<Revision> Override table header Revision (1-255)\n"); 20553289f6aSNate Lawson 20653289f6aSNate Lawson printf ("\nListings:\n"); 20753289f6aSNate Lawson printf (" -l Create mixed listing file (ASL source and AML) (*.lst)\n"); 20853289f6aSNate Lawson printf (" -ln Create namespace file (*.nsp)\n"); 20953289f6aSNate Lawson printf (" -ls Create combined source file (expanded includes) (*.src)\n"); 21053289f6aSNate Lawson 21153289f6aSNate Lawson printf ("\nAML Disassembler:\n"); 2121a39cfb0SJung-uk Kim printf (" -d [file] Disassemble or decode binary ACPI table to file (*.dsl)\n"); 21353289f6aSNate Lawson printf (" -dc [file] Disassemble AML and immediately compile it\n"); 21453289f6aSNate Lawson printf (" (Obtain DSDT from current system if no input file)\n"); 2151a39cfb0SJung-uk Kim printf (" -e [file] Include ACPI table for external symbol resolution\n"); 216fba7fc7eSJung-uk Kim printf (" -2 Emit ACPI 2.0 compatible ASL code\n"); 21753289f6aSNate Lawson printf (" -g Get ACPI tables and write to files (*.dat)\n"); 21853289f6aSNate Lawson 21953289f6aSNate Lawson printf ("\nHelp:\n"); 22053289f6aSNate Lawson printf (" -h Additional help and compiler debug options\n"); 22153289f6aSNate Lawson printf (" -hc Display operators allowed in constant expressions\n"); 22253289f6aSNate Lawson printf (" -hr Display ACPI reserved method names\n"); 22353289f6aSNate Lawson } 22453289f6aSNate Lawson 22553289f6aSNate Lawson 22653289f6aSNate Lawson /******************************************************************************* 22753289f6aSNate Lawson * 228fba7fc7eSJung-uk Kim * FUNCTION: HelpMessage 22953289f6aSNate Lawson * 23053289f6aSNate Lawson * PARAMETERS: None 23153289f6aSNate Lawson * 23253289f6aSNate Lawson * RETURN: None 23353289f6aSNate Lawson * 23453289f6aSNate Lawson * DESCRIPTION: Display help message 23553289f6aSNate Lawson * 23653289f6aSNate Lawson ******************************************************************************/ 23753289f6aSNate Lawson 238fba7fc7eSJung-uk Kim static void 23953289f6aSNate Lawson HelpMessage ( 24053289f6aSNate Lawson void) 24153289f6aSNate Lawson { 24253289f6aSNate Lawson 24353289f6aSNate Lawson printf ("AML output filename generation:\n"); 24453289f6aSNate Lawson printf (" Output filenames are generated by appending an extension to a common\n"); 24553289f6aSNate Lawson printf (" filename prefix. The filename prefix is obtained via one of the\n"); 24653289f6aSNate Lawson printf (" following methods (in priority order):\n"); 24753289f6aSNate Lawson printf (" 1) The -p option specifies the prefix\n"); 24853289f6aSNate Lawson printf (" 2) The prefix of the AMLFileName in the ASL Definition Block\n"); 24953289f6aSNate Lawson printf (" 3) The prefix of the input filename\n"); 25053289f6aSNate Lawson printf ("\n"); 25153289f6aSNate Lawson 25253289f6aSNate Lawson Options (); 25353289f6aSNate Lawson 2541a39cfb0SJung-uk Kim printf ("\nCompiler/Disassembler Debug Options:\n"); 25553289f6aSNate Lawson printf (" -b<p|t|b> Create compiler debug/trace file (*.txt)\n"); 25653289f6aSNate Lawson printf (" Types: Parse/Tree/Both\n"); 25753289f6aSNate Lawson printf (" -f Ignore errors, force creation of AML output file(s)\n"); 25853289f6aSNate Lawson printf (" -c Parse only, no output generation\n"); 25953289f6aSNate Lawson printf (" -ot Display compile times\n"); 26053289f6aSNate Lawson printf (" -x<level> Set debug level for trace output\n"); 26153289f6aSNate Lawson } 26253289f6aSNate Lawson 26353289f6aSNate Lawson 26453289f6aSNate Lawson /******************************************************************************* 26553289f6aSNate Lawson * 26653289f6aSNate Lawson * FUNCTION: Usage 26753289f6aSNate Lawson * 26853289f6aSNate Lawson * PARAMETERS: None 26953289f6aSNate Lawson * 27053289f6aSNate Lawson * RETURN: None 27153289f6aSNate Lawson * 27253289f6aSNate Lawson * DESCRIPTION: Display usage and option message 27353289f6aSNate Lawson * 27453289f6aSNate Lawson ******************************************************************************/ 27553289f6aSNate Lawson 276fba7fc7eSJung-uk Kim static void 27753289f6aSNate Lawson Usage ( 27853289f6aSNate Lawson void) 27953289f6aSNate Lawson { 28053289f6aSNate Lawson 28153289f6aSNate Lawson printf ("Usage: %s [Options] [InputFile]\n\n", CompilerName); 28253289f6aSNate Lawson Options (); 28353289f6aSNate Lawson } 28453289f6aSNate Lawson 28553289f6aSNate Lawson 28653289f6aSNate Lawson /******************************************************************************* 28753289f6aSNate Lawson * 28853289f6aSNate Lawson * FUNCTION: AslInitialize 28953289f6aSNate Lawson * 29053289f6aSNate Lawson * PARAMETERS: None 29153289f6aSNate Lawson * 29253289f6aSNate Lawson * RETURN: None 29353289f6aSNate Lawson * 29453289f6aSNate Lawson * DESCRIPTION: Initialize compiler globals 29553289f6aSNate Lawson * 29653289f6aSNate Lawson ******************************************************************************/ 29753289f6aSNate Lawson 298fba7fc7eSJung-uk Kim static void 299fba7fc7eSJung-uk Kim AslInitialize ( 300fba7fc7eSJung-uk Kim void) 30153289f6aSNate Lawson { 30253289f6aSNate Lawson UINT32 i; 30353289f6aSNate Lawson 30453289f6aSNate Lawson 30553289f6aSNate Lawson #ifdef _DEBUG 30653289f6aSNate Lawson _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(0)); 30753289f6aSNate Lawson #endif 30853289f6aSNate Lawson 30953289f6aSNate Lawson AcpiDbgLevel = 0; 31053289f6aSNate Lawson 31153289f6aSNate Lawson for (i = 0; i < ASL_NUM_FILES; i++) 31253289f6aSNate Lawson { 31353289f6aSNate Lawson Gbl_Files[i].Handle = NULL; 31453289f6aSNate Lawson Gbl_Files[i].Filename = NULL; 31553289f6aSNate Lawson } 31653289f6aSNate Lawson 31753289f6aSNate Lawson Gbl_Files[ASL_FILE_STDOUT].Handle = stdout; 31853289f6aSNate Lawson Gbl_Files[ASL_FILE_STDOUT].Filename = "STDOUT"; 31953289f6aSNate Lawson 32053289f6aSNate Lawson Gbl_Files[ASL_FILE_STDERR].Handle = stderr; 32153289f6aSNate Lawson Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR"; 32253289f6aSNate Lawson } 32353289f6aSNate Lawson 32453289f6aSNate Lawson 32553289f6aSNate Lawson /******************************************************************************* 32653289f6aSNate Lawson * 32753289f6aSNate Lawson * FUNCTION: AslCommandLine 32853289f6aSNate Lawson * 32953289f6aSNate Lawson * PARAMETERS: argc/argv 33053289f6aSNate Lawson * 33153289f6aSNate Lawson * RETURN: None 33253289f6aSNate Lawson * 33353289f6aSNate Lawson * DESCRIPTION: Command line processing 33453289f6aSNate Lawson * 33553289f6aSNate Lawson ******************************************************************************/ 33653289f6aSNate Lawson 337fba7fc7eSJung-uk Kim static void 33853289f6aSNate Lawson AslCommandLine ( 33953289f6aSNate Lawson int argc, 34053289f6aSNate Lawson char **argv) 34153289f6aSNate Lawson { 34253289f6aSNate Lawson BOOLEAN BadCommandLine = FALSE; 343fba7fc7eSJung-uk Kim ACPI_NATIVE_INT j; 34453289f6aSNate Lawson 34553289f6aSNate Lawson 34653289f6aSNate Lawson /* Minimum command line contains at least one option or an input file */ 34753289f6aSNate Lawson 34853289f6aSNate Lawson if (argc < 2) 34953289f6aSNate Lawson { 35053289f6aSNate Lawson AslCompilerSignon (ASL_FILE_STDOUT); 35153289f6aSNate Lawson Usage (); 35253289f6aSNate Lawson exit (1); 35353289f6aSNate Lawson } 35453289f6aSNate Lawson 35553289f6aSNate Lawson /* Get the command line options */ 35653289f6aSNate Lawson 3571a39cfb0SJung-uk Kim while ((j = AcpiGetopt (argc, argv, "2b:cd^e:fgh^i^l^o:p:r:s:t:v:w:x:")) != EOF) switch (j) 35853289f6aSNate Lawson { 359fba7fc7eSJung-uk Kim case '2': 360fba7fc7eSJung-uk Kim Gbl_Acpi2 = TRUE; 361fba7fc7eSJung-uk Kim break; 362fba7fc7eSJung-uk Kim 363fba7fc7eSJung-uk Kim 36453289f6aSNate Lawson case 'b': 36553289f6aSNate Lawson 36653289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 36753289f6aSNate Lawson { 36853289f6aSNate Lawson case 'b': 36953289f6aSNate Lawson AslCompilerdebug = 1; /* same as yydebug */ 37053289f6aSNate Lawson break; 37153289f6aSNate Lawson 37253289f6aSNate Lawson case 'p': 37353289f6aSNate Lawson AslCompilerdebug = 1; /* same as yydebug */ 37453289f6aSNate Lawson break; 37553289f6aSNate Lawson 37653289f6aSNate Lawson case 't': 37753289f6aSNate Lawson break; 37853289f6aSNate Lawson 37953289f6aSNate Lawson default: 38053289f6aSNate Lawson printf ("Unknown option: -b%s\n", AcpiGbl_Optarg); 38153289f6aSNate Lawson BadCommandLine = TRUE; 38253289f6aSNate Lawson break; 38353289f6aSNate Lawson } 38453289f6aSNate Lawson 38553289f6aSNate Lawson /* Produce debug output file */ 38653289f6aSNate Lawson 38753289f6aSNate Lawson Gbl_DebugFlag = TRUE; 38853289f6aSNate Lawson break; 38953289f6aSNate Lawson 39053289f6aSNate Lawson 39153289f6aSNate Lawson case 'c': 39253289f6aSNate Lawson 39353289f6aSNate Lawson /* Parse only */ 39453289f6aSNate Lawson 39553289f6aSNate Lawson Gbl_ParseOnlyFlag = TRUE; 39653289f6aSNate Lawson break; 39753289f6aSNate Lawson 39853289f6aSNate Lawson 39953289f6aSNate Lawson case 'd': 40053289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 40153289f6aSNate Lawson { 40253289f6aSNate Lawson case '^': 40353289f6aSNate Lawson DoCompile = FALSE; 40453289f6aSNate Lawson break; 40553289f6aSNate Lawson 40653289f6aSNate Lawson case 'c': 40753289f6aSNate Lawson break; 40853289f6aSNate Lawson 40953289f6aSNate Lawson default: 41053289f6aSNate Lawson printf ("Unknown option: -d%s\n", AcpiGbl_Optarg); 41153289f6aSNate Lawson BadCommandLine = TRUE; 41253289f6aSNate Lawson break; 41353289f6aSNate Lawson } 41453289f6aSNate Lawson 41553289f6aSNate Lawson Gbl_DisasmFlag = TRUE; 41653289f6aSNate Lawson break; 41753289f6aSNate Lawson 41853289f6aSNate Lawson 41953289f6aSNate Lawson case 'e': 4201a39cfb0SJung-uk Kim Gbl_ExternalFilename = AcpiGbl_Optarg; 42153289f6aSNate Lawson break; 42253289f6aSNate Lawson 42353289f6aSNate Lawson 42453289f6aSNate Lawson case 'f': 42553289f6aSNate Lawson 42653289f6aSNate Lawson /* Ignore errors and force creation of aml file */ 42753289f6aSNate Lawson 42853289f6aSNate Lawson Gbl_IgnoreErrors = TRUE; 42953289f6aSNate Lawson break; 43053289f6aSNate Lawson 43153289f6aSNate Lawson 43253289f6aSNate Lawson case 'g': 43353289f6aSNate Lawson 43453289f6aSNate Lawson /* Get all ACPI tables */ 43553289f6aSNate Lawson 43653289f6aSNate Lawson Gbl_GetAllTables = TRUE; 43753289f6aSNate Lawson DoCompile = FALSE; 43853289f6aSNate Lawson break; 43953289f6aSNate Lawson 44053289f6aSNate Lawson 44153289f6aSNate Lawson case 'h': 44253289f6aSNate Lawson 44353289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 44453289f6aSNate Lawson { 44553289f6aSNate Lawson case '^': 44653289f6aSNate Lawson HelpMessage (); 44753289f6aSNate Lawson exit (0); 44853289f6aSNate Lawson 44953289f6aSNate Lawson case 'c': 45053289f6aSNate Lawson UtDisplayConstantOpcodes (); 45153289f6aSNate Lawson exit (0); 45253289f6aSNate Lawson 45353289f6aSNate Lawson case 'r': 45453289f6aSNate Lawson /* reserved names */ 45553289f6aSNate Lawson 45653289f6aSNate Lawson MpDisplayReservedNames (); 45753289f6aSNate Lawson exit (0); 45853289f6aSNate Lawson 45953289f6aSNate Lawson default: 46053289f6aSNate Lawson printf ("Unknown option: -h%s\n", AcpiGbl_Optarg); 46153289f6aSNate Lawson BadCommandLine = TRUE; 46253289f6aSNate Lawson break; 46353289f6aSNate Lawson } 46453289f6aSNate Lawson break; 46553289f6aSNate Lawson 46653289f6aSNate Lawson 46753289f6aSNate Lawson case 'i': 46853289f6aSNate Lawson 46953289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 47053289f6aSNate Lawson { 47153289f6aSNate Lawson case 'a': 47253289f6aSNate Lawson 47353289f6aSNate Lawson /* Produce assembly code include file */ 47453289f6aSNate Lawson 47553289f6aSNate Lawson Gbl_AsmIncludeOutputFlag = TRUE; 47653289f6aSNate Lawson break; 47753289f6aSNate Lawson 47853289f6aSNate Lawson case 'c': 47953289f6aSNate Lawson 48053289f6aSNate Lawson /* Produce C include file */ 48153289f6aSNate Lawson 48253289f6aSNate Lawson Gbl_C_IncludeOutputFlag = TRUE; 48353289f6aSNate Lawson break; 48453289f6aSNate Lawson 48553289f6aSNate Lawson default: 48653289f6aSNate Lawson printf ("Unknown option: -s%s\n", AcpiGbl_Optarg); 48753289f6aSNate Lawson BadCommandLine = TRUE; 48853289f6aSNate Lawson break; 48953289f6aSNate Lawson } 49053289f6aSNate Lawson break; 49153289f6aSNate Lawson 49253289f6aSNate Lawson 49353289f6aSNate Lawson case 'l': 49453289f6aSNate Lawson 49553289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 49653289f6aSNate Lawson { 49753289f6aSNate Lawson case '^': 49853289f6aSNate Lawson /* Produce listing file (Mixed source/aml) */ 49953289f6aSNate Lawson 50053289f6aSNate Lawson Gbl_ListingFlag = TRUE; 50153289f6aSNate Lawson break; 50253289f6aSNate Lawson 50353289f6aSNate Lawson case 'n': 50453289f6aSNate Lawson /* Produce namespace file */ 50553289f6aSNate Lawson 50653289f6aSNate Lawson Gbl_NsOutputFlag = TRUE; 50753289f6aSNate Lawson break; 50853289f6aSNate Lawson 50953289f6aSNate Lawson case 's': 51053289f6aSNate Lawson /* Produce combined source file */ 51153289f6aSNate Lawson 51253289f6aSNate Lawson Gbl_SourceOutputFlag = TRUE; 51353289f6aSNate Lawson break; 51453289f6aSNate Lawson 51553289f6aSNate Lawson default: 51653289f6aSNate Lawson printf ("Unknown option: -l%s\n", AcpiGbl_Optarg); 51753289f6aSNate Lawson BadCommandLine = TRUE; 51853289f6aSNate Lawson break; 51953289f6aSNate Lawson } 52053289f6aSNate Lawson break; 52153289f6aSNate Lawson 52253289f6aSNate Lawson 52353289f6aSNate Lawson case 'o': 52453289f6aSNate Lawson 52553289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 52653289f6aSNate Lawson { 52753289f6aSNate Lawson case 'a': 52853289f6aSNate Lawson 52953289f6aSNate Lawson /* Disable all optimizations */ 53053289f6aSNate Lawson 53153289f6aSNate Lawson Gbl_FoldConstants = FALSE; 53253289f6aSNate Lawson Gbl_IntegerOptimizationFlag = FALSE; 53353289f6aSNate Lawson Gbl_ReferenceOptimizationFlag = FALSE; 53453289f6aSNate Lawson break; 53553289f6aSNate Lawson 53653289f6aSNate Lawson case 'f': 53753289f6aSNate Lawson 53853289f6aSNate Lawson /* Disable folding on "normal" expressions */ 53953289f6aSNate Lawson 54053289f6aSNate Lawson Gbl_FoldConstants = FALSE; 54153289f6aSNate Lawson break; 54253289f6aSNate Lawson 54353289f6aSNate Lawson case 'i': 54453289f6aSNate Lawson 54553289f6aSNate Lawson /* Disable integer optimization to constants */ 54653289f6aSNate Lawson 54753289f6aSNate Lawson Gbl_IntegerOptimizationFlag = FALSE; 54853289f6aSNate Lawson break; 54953289f6aSNate Lawson 55053289f6aSNate Lawson case 'n': 55153289f6aSNate Lawson 55253289f6aSNate Lawson /* Disable named reference optimization */ 55353289f6aSNate Lawson 55453289f6aSNate Lawson Gbl_ReferenceOptimizationFlag = FALSE; 55553289f6aSNate Lawson break; 55653289f6aSNate Lawson 55753289f6aSNate Lawson case 't': 55853289f6aSNate Lawson 55953289f6aSNate Lawson /* Display compile time(s) */ 56053289f6aSNate Lawson 56153289f6aSNate Lawson Gbl_CompileTimesFlag = TRUE; 56253289f6aSNate Lawson break; 56353289f6aSNate Lawson 56453289f6aSNate Lawson default: 56553289f6aSNate Lawson printf ("Unknown option: -c%s\n", AcpiGbl_Optarg); 56653289f6aSNate Lawson BadCommandLine = TRUE; 56753289f6aSNate Lawson break; 56853289f6aSNate Lawson } 56953289f6aSNate Lawson break; 57053289f6aSNate Lawson 57153289f6aSNate Lawson 57253289f6aSNate Lawson case 'p': 57353289f6aSNate Lawson 57453289f6aSNate Lawson /* Override default AML output filename */ 57553289f6aSNate Lawson 57653289f6aSNate Lawson Gbl_OutputFilenamePrefix = AcpiGbl_Optarg; 57753289f6aSNate Lawson Gbl_UseDefaultAmlFilename = FALSE; 57853289f6aSNate Lawson break; 57953289f6aSNate Lawson 58053289f6aSNate Lawson 58153289f6aSNate Lawson case 'r': 582c8466860SMark Santcroos Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0); 58353289f6aSNate Lawson break; 58453289f6aSNate Lawson 58553289f6aSNate Lawson 58653289f6aSNate Lawson case 's': 58753289f6aSNate Lawson 58853289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 58953289f6aSNate Lawson { 59053289f6aSNate Lawson case 'a': 59153289f6aSNate Lawson 59253289f6aSNate Lawson /* Produce assembly code output file */ 59353289f6aSNate Lawson 59453289f6aSNate Lawson Gbl_AsmOutputFlag = TRUE; 59553289f6aSNate Lawson break; 59653289f6aSNate Lawson 59753289f6aSNate Lawson case 'c': 59853289f6aSNate Lawson 59953289f6aSNate Lawson /* Produce C hex output file */ 60053289f6aSNate Lawson 60153289f6aSNate Lawson Gbl_C_OutputFlag = TRUE; 60253289f6aSNate Lawson break; 60353289f6aSNate Lawson 60453289f6aSNate Lawson default: 60553289f6aSNate Lawson printf ("Unknown option: -s%s\n", AcpiGbl_Optarg); 60653289f6aSNate Lawson BadCommandLine = TRUE; 60753289f6aSNate Lawson break; 60853289f6aSNate Lawson } 60953289f6aSNate Lawson break; 61053289f6aSNate Lawson 61153289f6aSNate Lawson 61253289f6aSNate Lawson case 't': 61353289f6aSNate Lawson 61453289f6aSNate Lawson /* Produce hex table output file */ 61553289f6aSNate Lawson 61653289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 61753289f6aSNate Lawson { 61853289f6aSNate Lawson case 'a': 61953289f6aSNate Lawson Gbl_HexOutputFlag = HEX_OUTPUT_ASM; 62053289f6aSNate Lawson break; 62153289f6aSNate Lawson 62253289f6aSNate Lawson case 'c': 62353289f6aSNate Lawson Gbl_HexOutputFlag = HEX_OUTPUT_C; 62453289f6aSNate Lawson break; 62553289f6aSNate Lawson 62653289f6aSNate Lawson default: 62753289f6aSNate Lawson printf ("Unknown option: -t%s\n", AcpiGbl_Optarg); 62853289f6aSNate Lawson BadCommandLine = TRUE; 62953289f6aSNate Lawson break; 63053289f6aSNate Lawson } 63153289f6aSNate Lawson break; 63253289f6aSNate Lawson 63353289f6aSNate Lawson 63453289f6aSNate Lawson case 'v': 63553289f6aSNate Lawson 63653289f6aSNate Lawson switch (AcpiGbl_Optarg[0]) 63753289f6aSNate Lawson { 63853289f6aSNate Lawson case 'i': 63953289f6aSNate Lawson /* Less verbose error messages */ 64053289f6aSNate Lawson 64153289f6aSNate Lawson Gbl_VerboseErrors = FALSE; 64253289f6aSNate Lawson break; 64353289f6aSNate Lawson 64453289f6aSNate Lawson case 'o': 64553289f6aSNate Lawson Gbl_DisplayOptimizations = TRUE; 64653289f6aSNate Lawson break; 64753289f6aSNate Lawson 64853289f6aSNate Lawson case 'r': 64953289f6aSNate Lawson Gbl_DisplayRemarks = FALSE; 65053289f6aSNate Lawson break; 65153289f6aSNate Lawson 65253289f6aSNate Lawson case 's': 65353289f6aSNate Lawson DoSignon = FALSE; 65453289f6aSNate Lawson break; 65553289f6aSNate Lawson 65653289f6aSNate Lawson default: 65753289f6aSNate Lawson printf ("Unknown option: -v%s\n", AcpiGbl_Optarg); 65853289f6aSNate Lawson BadCommandLine = TRUE; 65953289f6aSNate Lawson break; 66053289f6aSNate Lawson } 66153289f6aSNate Lawson break; 66253289f6aSNate Lawson 66353289f6aSNate Lawson 6641a39cfb0SJung-uk Kim case 'w': /* Set warning levels */ 6651a39cfb0SJung-uk Kim 6661a39cfb0SJung-uk Kim switch (AcpiGbl_Optarg[0]) 6671a39cfb0SJung-uk Kim { 6681a39cfb0SJung-uk Kim case '1': 6691a39cfb0SJung-uk Kim Gbl_WarningLevel = ASL_WARNING; 6701a39cfb0SJung-uk Kim break; 6711a39cfb0SJung-uk Kim 6721a39cfb0SJung-uk Kim case '2': 6731a39cfb0SJung-uk Kim Gbl_WarningLevel = ASL_WARNING2; 6741a39cfb0SJung-uk Kim break; 6751a39cfb0SJung-uk Kim 6761a39cfb0SJung-uk Kim case '3': 6771a39cfb0SJung-uk Kim Gbl_WarningLevel = ASL_WARNING3; 6781a39cfb0SJung-uk Kim break; 6791a39cfb0SJung-uk Kim 6801a39cfb0SJung-uk Kim default: 6811a39cfb0SJung-uk Kim printf ("Unknown option: -w%s\n", AcpiGbl_Optarg); 6821a39cfb0SJung-uk Kim BadCommandLine = TRUE; 6831a39cfb0SJung-uk Kim break; 6841a39cfb0SJung-uk Kim } 6851a39cfb0SJung-uk Kim break; 6861a39cfb0SJung-uk Kim 6871a39cfb0SJung-uk Kim 68853289f6aSNate Lawson case 'x': 68953289f6aSNate Lawson 69053289f6aSNate Lawson AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16); 69153289f6aSNate Lawson break; 69253289f6aSNate Lawson 69353289f6aSNate Lawson 69453289f6aSNate Lawson default: 69553289f6aSNate Lawson 69653289f6aSNate Lawson BadCommandLine = TRUE; 69753289f6aSNate Lawson break; 69853289f6aSNate Lawson } 69953289f6aSNate Lawson 70053289f6aSNate Lawson /* Next parameter must be the input filename */ 70153289f6aSNate Lawson 70253289f6aSNate Lawson Gbl_Files[ASL_FILE_INPUT].Filename = argv[AcpiGbl_Optind]; 703fba7fc7eSJung-uk Kim 704fba7fc7eSJung-uk Kim if (!Gbl_Files[ASL_FILE_INPUT].Filename && 705fba7fc7eSJung-uk Kim !Gbl_DisasmFlag && 706fba7fc7eSJung-uk Kim !Gbl_GetAllTables) 70753289f6aSNate Lawson { 70853289f6aSNate Lawson printf ("Missing input filename\n"); 70953289f6aSNate Lawson BadCommandLine = TRUE; 71053289f6aSNate Lawson } 71153289f6aSNate Lawson 71253289f6aSNate Lawson if (DoSignon) 71353289f6aSNate Lawson { 71453289f6aSNate Lawson AslCompilerSignon (ASL_FILE_STDOUT); 71553289f6aSNate Lawson } 71653289f6aSNate Lawson 71753289f6aSNate Lawson /* Abort if anything went wrong on the command line */ 71853289f6aSNate Lawson 71953289f6aSNate Lawson if (BadCommandLine) 72053289f6aSNate Lawson { 72153289f6aSNate Lawson printf ("\n"); 72253289f6aSNate Lawson Usage (); 72353289f6aSNate Lawson exit (1); 72453289f6aSNate Lawson } 72553289f6aSNate Lawson 72653289f6aSNate Lawson if ((AcpiGbl_Optind + 1) < argc) 72753289f6aSNate Lawson { 72853289f6aSNate Lawson printf ("Warning: extra arguments (%d) after input filename are ignored\n\n", 72953289f6aSNate Lawson argc - AcpiGbl_Optind - 1); 73053289f6aSNate Lawson } 73153289f6aSNate Lawson } 73253289f6aSNate Lawson 73353289f6aSNate Lawson 73453289f6aSNate Lawson /******************************************************************************* 73553289f6aSNate Lawson * 73653289f6aSNate Lawson * FUNCTION: main 73753289f6aSNate Lawson * 73853289f6aSNate Lawson * PARAMETERS: Standard argc/argv 73953289f6aSNate Lawson * 74053289f6aSNate Lawson * RETURN: Program termination code 74153289f6aSNate Lawson * 74253289f6aSNate Lawson * DESCRIPTION: C main routine for the Asl Compiler. Handle command line 74353289f6aSNate Lawson * options and begin the compile. 74453289f6aSNate Lawson * 74553289f6aSNate Lawson ******************************************************************************/ 74653289f6aSNate Lawson 74753289f6aSNate Lawson int ACPI_SYSTEM_XFACE 74853289f6aSNate Lawson main ( 74953289f6aSNate Lawson int argc, 75053289f6aSNate Lawson char **argv) 75153289f6aSNate Lawson { 75253289f6aSNate Lawson ACPI_STATUS Status; 75353289f6aSNate Lawson char *Prefix; 75453289f6aSNate Lawson 75553289f6aSNate Lawson 756fba7fc7eSJung-uk Kim #ifdef _DEBUG 757fba7fc7eSJung-uk Kim _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF | 758fba7fc7eSJung-uk Kim _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG)); 759fba7fc7eSJung-uk Kim #endif 760fba7fc7eSJung-uk Kim 76153289f6aSNate Lawson /* Init and command line */ 76253289f6aSNate Lawson 76353289f6aSNate Lawson AslInitialize (); 76453289f6aSNate Lawson AslCommandLine (argc, argv); 76553289f6aSNate Lawson 76653289f6aSNate Lawson /* 76753289f6aSNate Lawson * If -p not specified, we will use the input filename as the 76853289f6aSNate Lawson * output filename prefix 76953289f6aSNate Lawson */ 770fba7fc7eSJung-uk Kim Status = FlSplitInputPathname (Gbl_Files[ASL_FILE_INPUT].Filename, 77153289f6aSNate Lawson &Gbl_DirectoryPath, &Prefix); 772fba7fc7eSJung-uk Kim if (ACPI_FAILURE (Status)) 773fba7fc7eSJung-uk Kim { 774fba7fc7eSJung-uk Kim return -1; 775fba7fc7eSJung-uk Kim } 77653289f6aSNate Lawson 77753289f6aSNate Lawson if (Gbl_UseDefaultAmlFilename) 77853289f6aSNate Lawson { 77953289f6aSNate Lawson Gbl_OutputFilenamePrefix = Prefix; 78053289f6aSNate Lawson } 78153289f6aSNate Lawson 782fba7fc7eSJung-uk Kim /* AML Disassembly (Optional) */ 783fba7fc7eSJung-uk Kim 78453289f6aSNate Lawson if (Gbl_DisasmFlag || Gbl_GetAllTables) 78553289f6aSNate Lawson { 78653289f6aSNate Lawson /* ACPI CA subsystem initialization */ 78753289f6aSNate Lawson 7881a39cfb0SJung-uk Kim Status = AdInitialize (); 78953289f6aSNate Lawson if (ACPI_FAILURE (Status)) 79053289f6aSNate Lawson { 79153289f6aSNate Lawson return -1; 79253289f6aSNate Lawson } 79353289f6aSNate Lawson 7941a39cfb0SJung-uk Kim Status = AcpiAllocateRootTable (4); 79553289f6aSNate Lawson if (ACPI_FAILURE (Status)) 79653289f6aSNate Lawson { 7971a39cfb0SJung-uk Kim AcpiOsPrintf ("Could not initialize ACPI Table Manager, %s\n", 7981a39cfb0SJung-uk Kim AcpiFormatException (Status)); 79953289f6aSNate Lawson return -1; 80053289f6aSNate Lawson } 80153289f6aSNate Lawson 80253289f6aSNate Lawson /* This is where the disassembly happens */ 80353289f6aSNate Lawson 80453289f6aSNate Lawson AcpiGbl_DbOpt_disasm = TRUE; 80553289f6aSNate Lawson Status = AdAmlDisassemble (AslToFile, 80653289f6aSNate Lawson Gbl_Files[ASL_FILE_INPUT].Filename, 80753289f6aSNate Lawson Gbl_OutputFilenamePrefix, 80853289f6aSNate Lawson &Gbl_Files[ASL_FILE_INPUT].Filename, 80953289f6aSNate Lawson Gbl_GetAllTables); 81053289f6aSNate Lawson if (ACPI_FAILURE (Status)) 81153289f6aSNate Lawson { 81253289f6aSNate Lawson return -1; 81353289f6aSNate Lawson } 81453289f6aSNate Lawson 81553289f6aSNate Lawson /* 81653289f6aSNate Lawson * Gbl_Files[ASL_FILE_INPUT].Filename was replaced with the 81753289f6aSNate Lawson * .DSL disassembly file, which can now be compiled if requested 81853289f6aSNate Lawson */ 81953289f6aSNate Lawson if (DoCompile) 82053289f6aSNate Lawson { 82153289f6aSNate Lawson AcpiOsPrintf ("\nCompiling \"%s\"\n", 82253289f6aSNate Lawson Gbl_Files[ASL_FILE_INPUT].Filename); 82353289f6aSNate Lawson } 82453289f6aSNate Lawson } 82553289f6aSNate Lawson 82653289f6aSNate Lawson /* 82753289f6aSNate Lawson * ASL Compilation (Optional) 82853289f6aSNate Lawson */ 82953289f6aSNate Lawson if (DoCompile) 83053289f6aSNate Lawson { 83153289f6aSNate Lawson /* 83253289f6aSNate Lawson * If -p not specified, we will use the input filename as the 83353289f6aSNate Lawson * output filename prefix 83453289f6aSNate Lawson */ 835fba7fc7eSJung-uk Kim Status = FlSplitInputPathname (Gbl_Files[ASL_FILE_INPUT].Filename, 83653289f6aSNate Lawson &Gbl_DirectoryPath, &Prefix); 837fba7fc7eSJung-uk Kim if (ACPI_FAILURE (Status)) 838fba7fc7eSJung-uk Kim { 839fba7fc7eSJung-uk Kim return -1; 840fba7fc7eSJung-uk Kim } 84153289f6aSNate Lawson 84253289f6aSNate Lawson if (Gbl_UseDefaultAmlFilename) 84353289f6aSNate Lawson { 84453289f6aSNate Lawson Gbl_OutputFilenamePrefix = Prefix; 84553289f6aSNate Lawson } 84653289f6aSNate Lawson 84753289f6aSNate Lawson /* ACPI CA subsystem initialization (Must be re-initialized) */ 84853289f6aSNate Lawson 84953289f6aSNate Lawson Status = AcpiOsInitialize (); 85053289f6aSNate Lawson AcpiUtInitGlobals (); 85153289f6aSNate Lawson Status = AcpiUtMutexInitialize (); 85253289f6aSNate Lawson if (ACPI_FAILURE (Status)) 85353289f6aSNate Lawson { 85453289f6aSNate Lawson return -1; 85553289f6aSNate Lawson } 85653289f6aSNate Lawson 85753289f6aSNate Lawson Status = AcpiNsRootInitialize (); 85853289f6aSNate Lawson if (ACPI_FAILURE (Status)) 85953289f6aSNate Lawson { 86053289f6aSNate Lawson return -1; 86153289f6aSNate Lawson } 86253289f6aSNate Lawson Status = CmDoCompile (); 86353289f6aSNate Lawson } 86453289f6aSNate Lawson 86553289f6aSNate Lawson return (0); 86653289f6aSNate Lawson } 86753289f6aSNate Lawson 86853289f6aSNate Lawson 869