153289f6aSNate Lawson /****************************************************************************** 253289f6aSNate Lawson * 353289f6aSNate Lawson * Module Name: asllisting - Listing file generation 453289f6aSNate Lawson * 553289f6aSNate Lawson *****************************************************************************/ 653289f6aSNate Lawson 70d84335fSJung-uk Kim /****************************************************************************** 80d84335fSJung-uk Kim * 90d84335fSJung-uk Kim * 1. Copyright Notice 100d84335fSJung-uk Kim * 11*804fe266SJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2024, Intel Corp. 1253289f6aSNate Lawson * All rights reserved. 1353289f6aSNate Lawson * 140d84335fSJung-uk Kim * 2. License 150d84335fSJung-uk Kim * 160d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 170d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 180d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 190d84335fSJung-uk Kim * property rights. 200d84335fSJung-uk Kim * 210d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 230d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 250d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 260d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 270d84335fSJung-uk Kim * 280d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 300d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 310d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 320d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 330d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 340d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 350d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 360d84335fSJung-uk Kim * 370d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 380d84335fSJung-uk Kim * conditions are met: 390d84335fSJung-uk Kim * 400d84335fSJung-uk Kim * 3. Conditions 410d84335fSJung-uk Kim * 420d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 440d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 450d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 460d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 470d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 480d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 490d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 500d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 510d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 520d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 530d84335fSJung-uk Kim * 540d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 560d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 570d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 580d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 590d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 600d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 610d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 620d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 630d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 640d84335fSJung-uk Kim * make. 650d84335fSJung-uk Kim * 660d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 670d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 680d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 690d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 700d84335fSJung-uk Kim * distribution. 710d84335fSJung-uk Kim * 720d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 730d84335fSJung-uk Kim * Intel Code. 740d84335fSJung-uk Kim * 750d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 770d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 780d84335fSJung-uk Kim * without prior written authorization from Intel. 790d84335fSJung-uk Kim * 800d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 810d84335fSJung-uk Kim * 820d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880d84335fSJung-uk Kim * PARTICULAR PURPOSE. 890d84335fSJung-uk Kim * 900d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970d84335fSJung-uk Kim * LIMITED REMEDY. 980d84335fSJung-uk Kim * 990d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 1010d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 1020d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 1030d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 1040d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 1050d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 1060d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 1070d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 1090d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 1100d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 1110d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 1120d84335fSJung-uk Kim * such license, approval or letter. 1130d84335fSJung-uk Kim * 1140d84335fSJung-uk Kim ***************************************************************************** 1150d84335fSJung-uk Kim * 1160d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1170d84335fSJung-uk Kim * following license: 1180d84335fSJung-uk Kim * 119d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 120d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 121d244b227SJung-uk Kim * are met: 122d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 123d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 124d244b227SJung-uk Kim * without modification. 125d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 127d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 128d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 129d244b227SJung-uk Kim * binary redistribution. 130d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 131d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 132d244b227SJung-uk Kim * from this software without specific prior written permission. 13353289f6aSNate Lawson * 1340d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1350d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1360d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1370d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1380d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1400d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1410d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1420d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1430d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1440d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1450d84335fSJung-uk Kim * 1460d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 147d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 148d244b227SJung-uk Kim * Software Foundation. 14953289f6aSNate Lawson * 1500d84335fSJung-uk Kim *****************************************************************************/ 15153289f6aSNate Lawson 152ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h> 15353289f6aSNate Lawson #include "aslcompiler.y.h" 154ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/amlcode.h> 155ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acparser.h> 156ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acnamesp.h> 15753289f6aSNate Lawson 1589c7c683cSJung-uk Kim 15953289f6aSNate Lawson #define _COMPONENT ACPI_COMPILER 1609c7c683cSJung-uk Kim ACPI_MODULE_NAME ("asllisting") 1619c7c683cSJung-uk Kim 16253289f6aSNate Lawson 163fba7fc7eSJung-uk Kim /* Local prototypes */ 164fba7fc7eSJung-uk Kim 165fba7fc7eSJung-uk Kim static void 1669c7c683cSJung-uk Kim LsGenerateListing ( 1679c7c683cSJung-uk Kim UINT32 FileId); 168fba7fc7eSJung-uk Kim 169fba7fc7eSJung-uk Kim static ACPI_STATUS 170fba7fc7eSJung-uk Kim LsAmlListingWalk ( 171fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *Op, 172fba7fc7eSJung-uk Kim UINT32 Level, 173fba7fc7eSJung-uk Kim void *Context); 174fba7fc7eSJung-uk Kim 17542fecd12SJung-uk Kim static ACPI_STATUS 176a9f12690SJung-uk Kim LsTreeWriteWalk ( 177a9f12690SJung-uk Kim ACPI_PARSE_OBJECT *Op, 178a9f12690SJung-uk Kim UINT32 Level, 179a9f12690SJung-uk Kim void *Context); 180a9f12690SJung-uk Kim 1819c7c683cSJung-uk Kim static void 1829c7c683cSJung-uk Kim LsWriteNodeToListing ( 1839c7c683cSJung-uk Kim ACPI_PARSE_OBJECT *Op, 1849c7c683cSJung-uk Kim UINT32 FileId); 1859c7c683cSJung-uk Kim 1869c7c683cSJung-uk Kim static void 1879c7c683cSJung-uk Kim LsFinishSourceListing ( 1889c7c683cSJung-uk Kim UINT32 FileId); 189efcc2a30SJung-uk Kim 190efcc2a30SJung-uk Kim 191efcc2a30SJung-uk Kim /******************************************************************************* 192efcc2a30SJung-uk Kim * 193efcc2a30SJung-uk Kim * FUNCTION: LsDoListings 194efcc2a30SJung-uk Kim * 1959c7c683cSJung-uk Kim * PARAMETERS: None. Examines the various output file global flags. 196efcc2a30SJung-uk Kim * 197efcc2a30SJung-uk Kim * RETURN: None 198efcc2a30SJung-uk Kim * 199efcc2a30SJung-uk Kim * DESCRIPTION: Generate all requested listing files. 200efcc2a30SJung-uk Kim * 201efcc2a30SJung-uk Kim ******************************************************************************/ 202efcc2a30SJung-uk Kim 203efcc2a30SJung-uk Kim void 204efcc2a30SJung-uk Kim LsDoListings ( 205efcc2a30SJung-uk Kim void) 206efcc2a30SJung-uk Kim { 207efcc2a30SJung-uk Kim 2086f1f1a63SJung-uk Kim if (AslGbl_C_OutputFlag) 209efcc2a30SJung-uk Kim { 210efcc2a30SJung-uk Kim LsGenerateListing (ASL_FILE_C_SOURCE_OUTPUT); 211efcc2a30SJung-uk Kim } 212efcc2a30SJung-uk Kim 2136f1f1a63SJung-uk Kim if (AslGbl_ListingFlag) 214efcc2a30SJung-uk Kim { 215efcc2a30SJung-uk Kim LsGenerateListing (ASL_FILE_LISTING_OUTPUT); 216efcc2a30SJung-uk Kim } 217efcc2a30SJung-uk Kim 2186f1f1a63SJung-uk Kim if (AslGbl_AsmOutputFlag) 219efcc2a30SJung-uk Kim { 220efcc2a30SJung-uk Kim LsGenerateListing (ASL_FILE_ASM_SOURCE_OUTPUT); 221efcc2a30SJung-uk Kim } 222efcc2a30SJung-uk Kim 2236f1f1a63SJung-uk Kim if (AslGbl_C_IncludeOutputFlag) 224efcc2a30SJung-uk Kim { 225efcc2a30SJung-uk Kim LsGenerateListing (ASL_FILE_C_INCLUDE_OUTPUT); 226efcc2a30SJung-uk Kim } 227efcc2a30SJung-uk Kim 2286f1f1a63SJung-uk Kim if (AslGbl_AsmIncludeOutputFlag) 229efcc2a30SJung-uk Kim { 230efcc2a30SJung-uk Kim LsGenerateListing (ASL_FILE_ASM_INCLUDE_OUTPUT); 231efcc2a30SJung-uk Kim } 2329c7c683cSJung-uk Kim 2336f1f1a63SJung-uk Kim if (AslGbl_C_OffsetTableFlag) 2349c7c683cSJung-uk Kim { 2359c7c683cSJung-uk Kim LsGenerateListing (ASL_FILE_C_OFFSET_OUTPUT); 2369c7c683cSJung-uk Kim } 237efcc2a30SJung-uk Kim } 238ed17e06eSJung-uk Kim 23953289f6aSNate Lawson 24053289f6aSNate Lawson /******************************************************************************* 24153289f6aSNate Lawson * 2429c7c683cSJung-uk Kim * FUNCTION: LsGenerateListing 2431a39cfb0SJung-uk Kim * 2449c7c683cSJung-uk Kim * PARAMETERS: FileId - ID of listing file 2451a39cfb0SJung-uk Kim * 246efcc2a30SJung-uk Kim * RETURN: None 2471a39cfb0SJung-uk Kim * 2489c7c683cSJung-uk Kim * DESCRIPTION: Generate a listing file. This can be one of the several types 2499c7c683cSJung-uk Kim * of "listings" supported. 25053289f6aSNate Lawson * 25153289f6aSNate Lawson ******************************************************************************/ 25253289f6aSNate Lawson 253fba7fc7eSJung-uk Kim static void 2549c7c683cSJung-uk Kim LsGenerateListing ( 2559c7c683cSJung-uk Kim UINT32 FileId) 25653289f6aSNate Lawson { 25744b0f624SJung-uk Kim UINT32 WalkMode = ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_DB_SEPARATELY; 25853289f6aSNate Lawson 2599c7c683cSJung-uk Kim /* Start at the beginning of both the source and AML files */ 26053289f6aSNate Lawson 2619c7c683cSJung-uk Kim FlSeekFile (ASL_FILE_SOURCE_OUTPUT, 0); 2629c7c683cSJung-uk Kim FlSeekFile (ASL_FILE_AML_OUTPUT, 0); 2636f1f1a63SJung-uk Kim AslGbl_SourceLine = 0; 2646f1f1a63SJung-uk Kim AslGbl_CurrentHexColumn = 0; 2656f1f1a63SJung-uk Kim LsPushNode (AslGbl_Files[ASL_FILE_INPUT].Filename); 26653289f6aSNate Lawson 2679c7c683cSJung-uk Kim if (FileId == ASL_FILE_C_OFFSET_OUTPUT) 2689c7c683cSJung-uk Kim { 2696f1f1a63SJung-uk Kim AslGbl_CurrentAmlOffset = 0; 270a9d8d09cSJung-uk Kim 2719c7c683cSJung-uk Kim /* Offset table file has a special header and footer */ 2729c7c683cSJung-uk Kim 2739c7c683cSJung-uk Kim LsDoOffsetTableHeader (FileId); 2749c7c683cSJung-uk Kim 27544b0f624SJung-uk Kim TrWalkParseTree (AslGbl_CurrentDB, WalkMode, 276f8146b88SJung-uk Kim LsAmlOffsetWalk, NULL, (void *) ACPI_TO_POINTER (FileId)); 2779c7c683cSJung-uk Kim LsDoOffsetTableFooter (FileId); 2789c7c683cSJung-uk Kim return; 27953289f6aSNate Lawson } 28053289f6aSNate Lawson 2819c7c683cSJung-uk Kim /* Process all parse nodes */ 28253289f6aSNate Lawson 28344b0f624SJung-uk Kim TrWalkParseTree (AslGbl_CurrentDB, WalkMode, 284f8146b88SJung-uk Kim LsAmlListingWalk, NULL, (void *) ACPI_TO_POINTER (FileId)); 28553289f6aSNate Lawson 2869c7c683cSJung-uk Kim /* Final processing */ 28753289f6aSNate Lawson 2889c7c683cSJung-uk Kim LsFinishSourceListing (FileId); 28953289f6aSNate Lawson } 29053289f6aSNate Lawson 29153289f6aSNate Lawson 29253289f6aSNate Lawson /******************************************************************************* 29353289f6aSNate Lawson * 29453289f6aSNate Lawson * FUNCTION: LsAmlListingWalk 29553289f6aSNate Lawson * 29653289f6aSNate Lawson * PARAMETERS: ASL_WALK_CALLBACK 29753289f6aSNate Lawson * 29853289f6aSNate Lawson * RETURN: Status 29953289f6aSNate Lawson * 30053289f6aSNate Lawson * DESCRIPTION: Process one node during a listing file generation. 30153289f6aSNate Lawson * 30253289f6aSNate Lawson ******************************************************************************/ 30353289f6aSNate Lawson 304fba7fc7eSJung-uk Kim static ACPI_STATUS 30553289f6aSNate Lawson LsAmlListingWalk ( 30653289f6aSNate Lawson ACPI_PARSE_OBJECT *Op, 30753289f6aSNate Lawson UINT32 Level, 30853289f6aSNate Lawson void *Context) 30953289f6aSNate Lawson { 31053289f6aSNate Lawson UINT8 FileByte; 31153289f6aSNate Lawson UINT32 i; 3121a39cfb0SJung-uk Kim UINT32 FileId = (UINT32) ACPI_TO_INTEGER (Context); 31353289f6aSNate Lawson 31453289f6aSNate Lawson 31553289f6aSNate Lawson LsWriteNodeToListing (Op, FileId); 31653289f6aSNate Lawson 3175f9b24faSJung-uk Kim if (Op->Asl.CompileFlags & OP_IS_RESOURCE_DATA) 3181a39cfb0SJung-uk Kim { 3191a39cfb0SJung-uk Kim /* Buffer is a resource template, don't dump the data all at once */ 3201a39cfb0SJung-uk Kim 3211a39cfb0SJung-uk Kim return (AE_OK); 3221a39cfb0SJung-uk Kim } 3231a39cfb0SJung-uk Kim 324f8146b88SJung-uk Kim if ((FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) || 325f8146b88SJung-uk Kim (FileId == ASL_FILE_C_INCLUDE_OUTPUT)) 326f8146b88SJung-uk Kim { 327f8146b88SJung-uk Kim return (AE_OK); 328f8146b88SJung-uk Kim } 329f8146b88SJung-uk Kim 33053289f6aSNate Lawson /* Write the hex bytes to the listing file(s) (if requested) */ 33153289f6aSNate Lawson 33253289f6aSNate Lawson for (i = 0; i < Op->Asl.FinalAmlLength; i++) 33353289f6aSNate Lawson { 33453289f6aSNate Lawson if (ACPI_FAILURE (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1))) 33553289f6aSNate Lawson { 33653289f6aSNate Lawson FlFileError (ASL_FILE_AML_OUTPUT, ASL_MSG_READ); 33753289f6aSNate Lawson AslAbort (); 33853289f6aSNate Lawson } 339f8146b88SJung-uk Kim 34053289f6aSNate Lawson LsWriteListingHexBytes (&FileByte, 1, FileId); 34153289f6aSNate Lawson } 34253289f6aSNate Lawson 34353289f6aSNate Lawson return (AE_OK); 34453289f6aSNate Lawson } 34553289f6aSNate Lawson 34653289f6aSNate Lawson 34753289f6aSNate Lawson /******************************************************************************* 34853289f6aSNate Lawson * 3499c7c683cSJung-uk Kim * FUNCTION: LsDumpParseTree, LsTreeWriteWalk 35053289f6aSNate Lawson * 35153289f6aSNate Lawson * PARAMETERS: None 35253289f6aSNate Lawson * 3539c7c683cSJung-uk Kim * RETURN: None 35453289f6aSNate Lawson * 3559c7c683cSJung-uk Kim * DESCRIPTION: Dump entire parse tree, for compiler debug only 35653289f6aSNate Lawson * 35753289f6aSNate Lawson ******************************************************************************/ 35853289f6aSNate Lawson 3599c7c683cSJung-uk Kim void 3609c7c683cSJung-uk Kim LsDumpParseTree ( 361fba7fc7eSJung-uk Kim void) 36253289f6aSNate Lawson { 36353289f6aSNate Lawson 3646f1f1a63SJung-uk Kim if (!AslGbl_DebugFlag) 36553289f6aSNate Lawson { 36653289f6aSNate Lawson return; 36753289f6aSNate Lawson } 36853289f6aSNate Lawson 3699c7c683cSJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, "\nOriginal parse tree from parser:\n\n"); 370f8146b88SJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER1); 371f8146b88SJung-uk Kim 3726f1f1a63SJung-uk Kim TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD, 3739c7c683cSJung-uk Kim LsTreeWriteWalk, NULL, NULL); 374f8146b88SJung-uk Kim 375f8146b88SJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER1); 37653289f6aSNate Lawson } 37753289f6aSNate Lawson 37853289f6aSNate Lawson 3799c7c683cSJung-uk Kim static ACPI_STATUS 3809c7c683cSJung-uk Kim LsTreeWriteWalk ( 3819c7c683cSJung-uk Kim ACPI_PARSE_OBJECT *Op, 3829c7c683cSJung-uk Kim UINT32 Level, 3839c7c683cSJung-uk Kim void *Context) 38453289f6aSNate Lawson { 38553289f6aSNate Lawson 386f8146b88SJung-uk Kim /* Dump ParseOp name and possible value */ 387f8146b88SJung-uk Kim 388f8146b88SJung-uk Kim switch (Op->Asl.ParseOpcode) 389f8146b88SJung-uk Kim { 390f8146b88SJung-uk Kim case PARSEOP_NAMESEG: 391f8146b88SJung-uk Kim case PARSEOP_NAMESTRING: 392f8146b88SJung-uk Kim case PARSEOP_METHODCALL: 393f8146b88SJung-uk Kim case PARSEOP_STRING_LITERAL: 394f8146b88SJung-uk Kim 395f8146b88SJung-uk Kim UtDumpStringOp (Op, Level); 396f8146b88SJung-uk Kim break; 397f8146b88SJung-uk Kim 398f8146b88SJung-uk Kim case PARSEOP_BYTECONST: 399f8146b88SJung-uk Kim 400f8146b88SJung-uk Kim UtDumpIntegerOp (Op, Level, 2); 401f8146b88SJung-uk Kim break; 402f8146b88SJung-uk Kim 403f8146b88SJung-uk Kim case PARSEOP_WORDCONST: 404f8146b88SJung-uk Kim case PARSEOP_PACKAGE_LENGTH: 405f8146b88SJung-uk Kim 406f8146b88SJung-uk Kim UtDumpIntegerOp (Op, Level, 4); 407f8146b88SJung-uk Kim break; 408f8146b88SJung-uk Kim 409f8146b88SJung-uk Kim case PARSEOP_DWORDCONST: 410f8146b88SJung-uk Kim case PARSEOP_EISAID: 411f8146b88SJung-uk Kim 412f8146b88SJung-uk Kim UtDumpIntegerOp (Op, Level, 8); 413f8146b88SJung-uk Kim break; 414f8146b88SJung-uk Kim 415f8146b88SJung-uk Kim case PARSEOP_QWORDCONST: 416f8146b88SJung-uk Kim case PARSEOP_INTEGER: 417f8146b88SJung-uk Kim case PARSEOP_ONE: 418f8146b88SJung-uk Kim case PARSEOP_ZERO: 419f8146b88SJung-uk Kim case PARSEOP_ONES: 420f8146b88SJung-uk Kim 421f8146b88SJung-uk Kim UtDumpIntegerOp (Op, Level, 16); 422f8146b88SJung-uk Kim break; 423f8146b88SJung-uk Kim 424f8146b88SJung-uk Kim case PARSEOP_INCLUDE: 42553289f6aSNate Lawson 4269c7c683cSJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, 427f8146b88SJung-uk Kim "Open: %s\n", Op->Asl.Value.String); 428f8146b88SJung-uk Kim return (AE_OK); 429a9d8d09cSJung-uk Kim 430f8146b88SJung-uk Kim case PARSEOP_INCLUDE_END: 43153289f6aSNate Lawson 432f8146b88SJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, 433f8146b88SJung-uk Kim "Close: %s\n", Op->Asl.Filename); 434f8146b88SJung-uk Kim return (AE_OK); 435f8146b88SJung-uk Kim 436f8146b88SJung-uk Kim default: 437f8146b88SJung-uk Kim 438f8146b88SJung-uk Kim UtDumpBasicOp (Op, Level); 439f8146b88SJung-uk Kim break; 440f8146b88SJung-uk Kim } 441f8146b88SJung-uk Kim 442f8146b88SJung-uk Kim /* Dump the remaining data */ 443f8146b88SJung-uk Kim 444f8146b88SJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_DEBUG1, 445f8146b88SJung-uk Kim Op->Asl.ParseOpcode, Op->Asl.CompileFlags, 446f8146b88SJung-uk Kim Op->Asl.LineNumber, Op->Asl.EndLine, 447f8146b88SJung-uk Kim Op->Asl.LogicalLineNumber, Op->Asl.EndLogicalLine); 448f8146b88SJung-uk Kim 4495f9b24faSJung-uk Kim TrPrintOpFlags (Op->Asl.CompileFlags, ASL_TREE_OUTPUT); 4507cf3e94aSJung-uk Kim DbgPrint (ASL_TREE_OUTPUT, "\n"); 4519c7c683cSJung-uk Kim return (AE_OK); 45253289f6aSNate Lawson } 45353289f6aSNate Lawson 45453289f6aSNate Lawson 45553289f6aSNate Lawson /******************************************************************************* 45653289f6aSNate Lawson * 45753289f6aSNate Lawson * FUNCTION: LsWriteNodeToListing 45853289f6aSNate Lawson * 45953289f6aSNate Lawson * PARAMETERS: Op - Parse node to write to the listing file. 46053289f6aSNate Lawson * FileId - ID of current listing file 46153289f6aSNate Lawson * 46253289f6aSNate Lawson * RETURN: None. 46353289f6aSNate Lawson * 46453289f6aSNate Lawson * DESCRIPTION: Write "a node" to the listing file. This means to 46553289f6aSNate Lawson * 1) Write out all of the source text associated with the node 46653289f6aSNate Lawson * 2) Write out all of the AML bytes associated with the node 46753289f6aSNate Lawson * 3) Write any compiler exceptions associated with the node 46853289f6aSNate Lawson * 46953289f6aSNate Lawson ******************************************************************************/ 47053289f6aSNate Lawson 471fba7fc7eSJung-uk Kim static void 47253289f6aSNate Lawson LsWriteNodeToListing ( 47353289f6aSNate Lawson ACPI_PARSE_OBJECT *Op, 47453289f6aSNate Lawson UINT32 FileId) 47553289f6aSNate Lawson { 47653289f6aSNate Lawson const ACPI_OPCODE_INFO *OpInfo; 47753289f6aSNate Lawson UINT32 OpClass; 47853289f6aSNate Lawson char *Pathname; 47953289f6aSNate Lawson UINT32 Length; 48053289f6aSNate Lawson UINT32 i; 48153289f6aSNate Lawson 48253289f6aSNate Lawson 48353289f6aSNate Lawson OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); 48453289f6aSNate Lawson OpClass = OpInfo->Class; 48553289f6aSNate Lawson 486fba7fc7eSJung-uk Kim /* TBD: clean this up with a single flag that says: 487fba7fc7eSJung-uk Kim * I start a named output block 488fba7fc7eSJung-uk Kim */ 48953289f6aSNate Lawson if (FileId == ASL_FILE_C_SOURCE_OUTPUT) 49053289f6aSNate Lawson { 49153289f6aSNate Lawson switch (Op->Asl.ParseOpcode) 49253289f6aSNate Lawson { 493f8146b88SJung-uk Kim case PARSEOP_DEFINITION_BLOCK: 49453289f6aSNate Lawson case PARSEOP_METHODCALL: 49553289f6aSNate Lawson case PARSEOP_INCLUDE: 49653289f6aSNate Lawson case PARSEOP_INCLUDE_END: 49753289f6aSNate Lawson case PARSEOP_DEFAULT_ARG: 49853289f6aSNate Lawson 49953289f6aSNate Lawson break; 50053289f6aSNate Lawson 50153289f6aSNate Lawson default: 502a9d8d09cSJung-uk Kim 50353289f6aSNate Lawson switch (OpClass) 50453289f6aSNate Lawson { 50553289f6aSNate Lawson case AML_CLASS_NAMED_OBJECT: 506a9d8d09cSJung-uk Kim 50753289f6aSNate Lawson switch (Op->Asl.AmlOpcode) 50853289f6aSNate Lawson { 50953289f6aSNate Lawson case AML_SCOPE_OP: 51053289f6aSNate Lawson case AML_ALIAS_OP: 511a9d8d09cSJung-uk Kim 51253289f6aSNate Lawson break; 51353289f6aSNate Lawson 51453289f6aSNate Lawson default: 515a9d8d09cSJung-uk Kim 51653289f6aSNate Lawson if (Op->Asl.ExternalName) 51753289f6aSNate Lawson { 51853289f6aSNate Lawson LsFlushListingBuffer (FileId); 51953289f6aSNate Lawson FlPrintFile (FileId, " };\n"); 52053289f6aSNate Lawson } 52153289f6aSNate Lawson break; 52253289f6aSNate Lawson } 52353289f6aSNate Lawson break; 52453289f6aSNate Lawson 52553289f6aSNate Lawson default: 526a9d8d09cSJung-uk Kim 52753289f6aSNate Lawson /* Don't care about other objects */ 528a9d8d09cSJung-uk Kim 52953289f6aSNate Lawson break; 53053289f6aSNate Lawson } 53153289f6aSNate Lawson break; 53253289f6aSNate Lawson } 53353289f6aSNate Lawson } 53453289f6aSNate Lawson 53553289f6aSNate Lawson /* These cases do not have a corresponding AML opcode */ 53653289f6aSNate Lawson 53753289f6aSNate Lawson switch (Op->Asl.ParseOpcode) 53853289f6aSNate Lawson { 539f8146b88SJung-uk Kim case PARSEOP_DEFINITION_BLOCK: 54053289f6aSNate Lawson 541f8146b88SJung-uk Kim /* Always start a definition block at AML offset zero */ 542f8146b88SJung-uk Kim 5436f1f1a63SJung-uk Kim AslGbl_CurrentAmlOffset = 0; 54453289f6aSNate Lawson LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, FileId); 54553289f6aSNate Lawson 54653289f6aSNate Lawson /* Use the table Signature and TableId to build a unique name */ 54753289f6aSNate Lawson 548f8146b88SJung-uk Kim switch (FileId) 54953289f6aSNate Lawson { 550f8146b88SJung-uk Kim case ASL_FILE_ASM_SOURCE_OUTPUT: 551f8146b88SJung-uk Kim 552fba7fc7eSJung-uk Kim FlPrintFile (FileId, 553fba7fc7eSJung-uk Kim "%s_%s_Header \\\n", 5546f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId); 555f8146b88SJung-uk Kim break; 556f8146b88SJung-uk Kim 557f8146b88SJung-uk Kim case ASL_FILE_C_SOURCE_OUTPUT: 558f8146b88SJung-uk Kim 559fba7fc7eSJung-uk Kim FlPrintFile (FileId, 560fba7fc7eSJung-uk Kim " unsigned char %s_%s_Header [] =\n {\n", 5616f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId); 562f8146b88SJung-uk Kim break; 563f8146b88SJung-uk Kim 564f8146b88SJung-uk Kim case ASL_FILE_ASM_INCLUDE_OUTPUT: 565f8146b88SJung-uk Kim 566fba7fc7eSJung-uk Kim FlPrintFile (FileId, 567fba7fc7eSJung-uk Kim "extrn %s_%s_Header : byte\n", 5686f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId); 569f8146b88SJung-uk Kim break; 570f8146b88SJung-uk Kim 571f8146b88SJung-uk Kim case ASL_FILE_C_INCLUDE_OUTPUT: 572f8146b88SJung-uk Kim 573fba7fc7eSJung-uk Kim FlPrintFile (FileId, 574fba7fc7eSJung-uk Kim "extern unsigned char %s_%s_Header [];\n", 5756f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId); 576f8146b88SJung-uk Kim break; 577f8146b88SJung-uk Kim 578f8146b88SJung-uk Kim default: 579f8146b88SJung-uk Kim break; 58053289f6aSNate Lawson } 581f8146b88SJung-uk Kim 58253289f6aSNate Lawson return; 58353289f6aSNate Lawson 58453289f6aSNate Lawson 58553289f6aSNate Lawson case PARSEOP_METHODCALL: 58653289f6aSNate Lawson 587fba7fc7eSJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, 588fba7fc7eSJung-uk Kim FileId); 58953289f6aSNate Lawson return; 59053289f6aSNate Lawson 59153289f6aSNate Lawson 59253289f6aSNate Lawson case PARSEOP_INCLUDE: 59353289f6aSNate Lawson 594fba7fc7eSJung-uk Kim /* Flush everything up to and including the include source line */ 59553289f6aSNate Lawson 596fba7fc7eSJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, 597fba7fc7eSJung-uk Kim FileId); 598fba7fc7eSJung-uk Kim 599fba7fc7eSJung-uk Kim /* Create a new listing node and push it */ 600fba7fc7eSJung-uk Kim 601f8146b88SJung-uk Kim LsPushNode (Op->Asl.Value.String); 60253289f6aSNate Lawson return; 60353289f6aSNate Lawson 60453289f6aSNate Lawson 60553289f6aSNate Lawson case PARSEOP_INCLUDE_END: 60653289f6aSNate Lawson 607fba7fc7eSJung-uk Kim /* Flush out the rest of the include file */ 60853289f6aSNate Lawson 609fba7fc7eSJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, 610fba7fc7eSJung-uk Kim FileId); 611fba7fc7eSJung-uk Kim 612fba7fc7eSJung-uk Kim /* Pop off this listing node and go back to the parent file */ 613fba7fc7eSJung-uk Kim 614fba7fc7eSJung-uk Kim (void) LsPopNode (); 61553289f6aSNate Lawson return; 61653289f6aSNate Lawson 61753289f6aSNate Lawson 61853289f6aSNate Lawson case PARSEOP_DEFAULT_ARG: 6191a39cfb0SJung-uk Kim 6205f9b24faSJung-uk Kim if (Op->Asl.CompileFlags & OP_IS_RESOURCE_DESC) 6211a39cfb0SJung-uk Kim { 6221a39cfb0SJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.EndLogicalLine, 6231a39cfb0SJung-uk Kim FileId); 6241a39cfb0SJung-uk Kim } 62553289f6aSNate Lawson return; 62653289f6aSNate Lawson 62753289f6aSNate Lawson 62853289f6aSNate Lawson default: 629a9d8d09cSJung-uk Kim 63053289f6aSNate Lawson /* All other opcodes have an AML opcode */ 631a9d8d09cSJung-uk Kim 63253289f6aSNate Lawson break; 63353289f6aSNate Lawson } 63453289f6aSNate Lawson 63553289f6aSNate Lawson /* 63653289f6aSNate Lawson * Otherwise, we look at the AML opcode because we can 63753289f6aSNate Lawson * switch on the opcode type, getting an entire class 63853289f6aSNate Lawson * at once 63953289f6aSNate Lawson */ 64053289f6aSNate Lawson switch (OpClass) 64153289f6aSNate Lawson { 64253289f6aSNate Lawson case AML_CLASS_ARGUMENT: /* argument type only */ 64353289f6aSNate Lawson case AML_CLASS_INTERNAL: 64453289f6aSNate Lawson 64553289f6aSNate Lawson break; 64653289f6aSNate Lawson 64753289f6aSNate Lawson case AML_CLASS_NAMED_OBJECT: 64853289f6aSNate Lawson 64953289f6aSNate Lawson switch (Op->Asl.AmlOpcode) 65053289f6aSNate Lawson { 65153289f6aSNate Lawson case AML_FIELD_OP: 65253289f6aSNate Lawson case AML_INDEX_FIELD_OP: 65353289f6aSNate Lawson case AML_BANK_FIELD_OP: 654fba7fc7eSJung-uk Kim /* 655fba7fc7eSJung-uk Kim * For fields, we want to dump all the AML after the 656fba7fc7eSJung-uk Kim * entire definition 657fba7fc7eSJung-uk Kim */ 658fba7fc7eSJung-uk Kim LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, 659fba7fc7eSJung-uk Kim FileId); 66053289f6aSNate Lawson break; 66153289f6aSNate Lawson 6621a39cfb0SJung-uk Kim case AML_NAME_OP: 6631a39cfb0SJung-uk Kim 6645f9b24faSJung-uk Kim if (Op->Asl.CompileFlags & OP_IS_RESOURCE_DESC) 6651a39cfb0SJung-uk Kim { 6661a39cfb0SJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, 6671a39cfb0SJung-uk Kim FileId); 6681a39cfb0SJung-uk Kim } 6691a39cfb0SJung-uk Kim else 6701a39cfb0SJung-uk Kim { 6711a39cfb0SJung-uk Kim /* 6721a39cfb0SJung-uk Kim * For fields, we want to dump all the AML after the 6731a39cfb0SJung-uk Kim * entire definition 6741a39cfb0SJung-uk Kim */ 6751a39cfb0SJung-uk Kim LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, 6761a39cfb0SJung-uk Kim FileId); 6771a39cfb0SJung-uk Kim } 6781a39cfb0SJung-uk Kim break; 6791a39cfb0SJung-uk Kim 68053289f6aSNate Lawson default: 681a9d8d09cSJung-uk Kim 682fba7fc7eSJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, 683fba7fc7eSJung-uk Kim FileId); 68453289f6aSNate Lawson break; 68553289f6aSNate Lawson } 68653289f6aSNate Lawson 68753289f6aSNate Lawson switch (Op->Asl.AmlOpcode) 68853289f6aSNate Lawson { 68953289f6aSNate Lawson case AML_SCOPE_OP: 69053289f6aSNate Lawson case AML_ALIAS_OP: 69153289f6aSNate Lawson 69253289f6aSNate Lawson /* These opcodes do not declare a new object, ignore them */ 69353289f6aSNate Lawson 69453289f6aSNate Lawson break; 69553289f6aSNate Lawson 69653289f6aSNate Lawson default: 69753289f6aSNate Lawson 69853289f6aSNate Lawson /* All other named object opcodes come here */ 69953289f6aSNate Lawson 70053289f6aSNate Lawson switch (FileId) 70153289f6aSNate Lawson { 70253289f6aSNate Lawson case ASL_FILE_ASM_SOURCE_OUTPUT: 70353289f6aSNate Lawson case ASL_FILE_C_SOURCE_OUTPUT: 70453289f6aSNate Lawson case ASL_FILE_ASM_INCLUDE_OUTPUT: 70553289f6aSNate Lawson case ASL_FILE_C_INCLUDE_OUTPUT: 70653289f6aSNate Lawson /* 70753289f6aSNate Lawson * For named objects, we will create a valid symbol so that the 70853289f6aSNate Lawson * AML code can be referenced from C or ASM 70953289f6aSNate Lawson */ 71053289f6aSNate Lawson if (Op->Asl.ExternalName) 71153289f6aSNate Lawson { 71253289f6aSNate Lawson /* Get the full pathname associated with this node */ 71353289f6aSNate Lawson 71453289f6aSNate Lawson Pathname = AcpiNsGetExternalPathname (Op->Asl.Node); 71553289f6aSNate Lawson Length = strlen (Pathname); 71653289f6aSNate Lawson if (Length >= 4) 71753289f6aSNate Lawson { 71853289f6aSNate Lawson /* Convert all dots in the path to underscores */ 71953289f6aSNate Lawson 72053289f6aSNate Lawson for (i = 0; i < Length; i++) 72153289f6aSNate Lawson { 72253289f6aSNate Lawson if (Pathname[i] == '.') 72353289f6aSNate Lawson { 72453289f6aSNate Lawson Pathname[i] = '_'; 72553289f6aSNate Lawson } 72653289f6aSNate Lawson } 72753289f6aSNate Lawson 72853289f6aSNate Lawson /* Create the appropriate symbol in the output file */ 72953289f6aSNate Lawson 730f8146b88SJung-uk Kim switch (FileId) 73153289f6aSNate Lawson { 732f8146b88SJung-uk Kim case ASL_FILE_ASM_SOURCE_OUTPUT: 733f8146b88SJung-uk Kim 734fba7fc7eSJung-uk Kim FlPrintFile (FileId, 735fba7fc7eSJung-uk Kim "%s_%s_%s \\\n", 7366f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId, &Pathname[1]); 737f8146b88SJung-uk Kim break; 738f8146b88SJung-uk Kim 739f8146b88SJung-uk Kim case ASL_FILE_C_SOURCE_OUTPUT: 740f8146b88SJung-uk Kim 741fba7fc7eSJung-uk Kim FlPrintFile (FileId, 742fba7fc7eSJung-uk Kim " unsigned char %s_%s_%s [] =\n {\n", 7436f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId, &Pathname[1]); 744f8146b88SJung-uk Kim break; 745f8146b88SJung-uk Kim 746f8146b88SJung-uk Kim case ASL_FILE_ASM_INCLUDE_OUTPUT: 747f8146b88SJung-uk Kim 748fba7fc7eSJung-uk Kim FlPrintFile (FileId, 749fba7fc7eSJung-uk Kim "extrn %s_%s_%s : byte\n", 7506f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId, &Pathname[1]); 751f8146b88SJung-uk Kim break; 752f8146b88SJung-uk Kim 753f8146b88SJung-uk Kim case ASL_FILE_C_INCLUDE_OUTPUT: 754f8146b88SJung-uk Kim 755fba7fc7eSJung-uk Kim FlPrintFile (FileId, 756fba7fc7eSJung-uk Kim "extern unsigned char %s_%s_%s [];\n", 7576f1f1a63SJung-uk Kim AslGbl_TableSignature, AslGbl_TableId, &Pathname[1]); 758f8146b88SJung-uk Kim break; 759f8146b88SJung-uk Kim 760f8146b88SJung-uk Kim default: 761f8146b88SJung-uk Kim break; 76253289f6aSNate Lawson } 76353289f6aSNate Lawson } 764f8146b88SJung-uk Kim 7651a39cfb0SJung-uk Kim ACPI_FREE (Pathname); 76653289f6aSNate Lawson } 76753289f6aSNate Lawson break; 76853289f6aSNate Lawson 76953289f6aSNate Lawson default: 770a9d8d09cSJung-uk Kim 77153289f6aSNate Lawson /* Nothing to do for listing file */ 772a9d8d09cSJung-uk Kim 77353289f6aSNate Lawson break; 77453289f6aSNate Lawson } 77553289f6aSNate Lawson } 77653289f6aSNate Lawson break; 77753289f6aSNate Lawson 77853289f6aSNate Lawson case AML_CLASS_EXECUTE: 77953289f6aSNate Lawson case AML_CLASS_CREATE: 78053289f6aSNate Lawson default: 78153289f6aSNate Lawson 7821a39cfb0SJung-uk Kim if ((Op->Asl.ParseOpcode == PARSEOP_BUFFER) && 7835f9b24faSJung-uk Kim (Op->Asl.CompileFlags & OP_IS_RESOURCE_DESC)) 7841a39cfb0SJung-uk Kim { 7851a39cfb0SJung-uk Kim return; 7861a39cfb0SJung-uk Kim } 7871a39cfb0SJung-uk Kim 788fba7fc7eSJung-uk Kim LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, 789fba7fc7eSJung-uk Kim FileId); 79053289f6aSNate Lawson break; 79153289f6aSNate Lawson 79253289f6aSNate Lawson case AML_CLASS_UNKNOWN: 793a9d8d09cSJung-uk Kim 79453289f6aSNate Lawson break; 79553289f6aSNate Lawson } 79653289f6aSNate Lawson } 7979c7c683cSJung-uk Kim 7989c7c683cSJung-uk Kim 7999c7c683cSJung-uk Kim /******************************************************************************* 8009c7c683cSJung-uk Kim * 8019c7c683cSJung-uk Kim * FUNCTION: LsFinishSourceListing 8029c7c683cSJung-uk Kim * 8039c7c683cSJung-uk Kim * PARAMETERS: FileId - ID of current listing file. 8049c7c683cSJung-uk Kim * 8059c7c683cSJung-uk Kim * RETURN: None 8069c7c683cSJung-uk Kim * 8079c7c683cSJung-uk Kim * DESCRIPTION: Cleanup routine for the listing file. Flush the hex AML 8089c7c683cSJung-uk Kim * listing buffer, and flush out any remaining lines in the 8099c7c683cSJung-uk Kim * source input file. 8109c7c683cSJung-uk Kim * 8119c7c683cSJung-uk Kim ******************************************************************************/ 8129c7c683cSJung-uk Kim 8139c7c683cSJung-uk Kim static void 8149c7c683cSJung-uk Kim LsFinishSourceListing ( 8159c7c683cSJung-uk Kim UINT32 FileId) 8169c7c683cSJung-uk Kim { 8179c7c683cSJung-uk Kim 8189c7c683cSJung-uk Kim if ((FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) || 8199c7c683cSJung-uk Kim (FileId == ASL_FILE_C_INCLUDE_OUTPUT)) 8209c7c683cSJung-uk Kim { 8219c7c683cSJung-uk Kim return; 8229c7c683cSJung-uk Kim } 8239c7c683cSJung-uk Kim 8249c7c683cSJung-uk Kim LsFlushListingBuffer (FileId); 8256f1f1a63SJung-uk Kim AslGbl_CurrentAmlOffset = 0; 8269c7c683cSJung-uk Kim 8279c7c683cSJung-uk Kim /* Flush any remaining text in the source file */ 8289c7c683cSJung-uk Kim 8299c7c683cSJung-uk Kim if (FileId == ASL_FILE_C_SOURCE_OUTPUT) 8309c7c683cSJung-uk Kim { 8319c7c683cSJung-uk Kim FlPrintFile (FileId, " /*\n"); 8329c7c683cSJung-uk Kim } 8339c7c683cSJung-uk Kim 8349c7c683cSJung-uk Kim while (LsWriteOneSourceLine (FileId)) 8359c7c683cSJung-uk Kim { ; } 8369c7c683cSJung-uk Kim 8379c7c683cSJung-uk Kim if (FileId == ASL_FILE_C_SOURCE_OUTPUT) 8389c7c683cSJung-uk Kim { 8399c7c683cSJung-uk Kim FlPrintFile (FileId, "\n */\n };\n"); 8409c7c683cSJung-uk Kim } 8419c7c683cSJung-uk Kim 8429c7c683cSJung-uk Kim FlPrintFile (FileId, "\n"); 8439c7c683cSJung-uk Kim 8449c7c683cSJung-uk Kim if (FileId == ASL_FILE_LISTING_OUTPUT) 8459c7c683cSJung-uk Kim { 8469c7c683cSJung-uk Kim /* Print a summary of the compile exceptions */ 8479c7c683cSJung-uk Kim 8489c7c683cSJung-uk Kim FlPrintFile (FileId, "\n\nSummary of errors and warnings\n\n"); 8499c7c683cSJung-uk Kim AePrintErrorLog (FileId); 8509c7c683cSJung-uk Kim FlPrintFile (FileId, "\n"); 85144b0f624SJung-uk Kim UtDisplayOneSummary (FileId, TRUE); 8529c7c683cSJung-uk Kim FlPrintFile (FileId, "\n"); 8539c7c683cSJung-uk Kim } 8549c7c683cSJung-uk Kim } 855