Home | History | Annotate | Line # | Download | only in compiler
      1 /******************************************************************************
      2  *
      3  * Module Name: dtcompiler.h - header for data table compiler
      4  *
      5  *****************************************************************************/
      6 
      7 /******************************************************************************
      8  *
      9  * 1. Copyright Notice
     10  *
     11  * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
     12  * All rights reserved.
     13  *
     14  * 2. License
     15  *
     16  * 2.1. This is your license from Intel Corp. under its intellectual property
     17  * rights. You may have additional license terms from the party that provided
     18  * you this software, covering your right to use that party's intellectual
     19  * property rights.
     20  *
     21  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
     22  * copy of the source code appearing in this file ("Covered Code") an
     23  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
     24  * base code distributed originally by Intel ("Original Intel Code") to copy,
     25  * make derivatives, distribute, use and display any portion of the Covered
     26  * Code in any form, with the right to sublicense such rights; and
     27  *
     28  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
     29  * license (with the right to sublicense), under only those claims of Intel
     30  * patents that are infringed by the Original Intel Code, to make, use, sell,
     31  * offer to sell, and import the Covered Code and derivative works thereof
     32  * solely to the minimum extent necessary to exercise the above copyright
     33  * license, and in no event shall the patent license extend to any additions
     34  * to or modifications of the Original Intel Code. No other license or right
     35  * is granted directly or by implication, estoppel or otherwise;
     36  *
     37  * The above copyright and patent license is granted only if the following
     38  * conditions are met:
     39  *
     40  * 3. Conditions
     41  *
     42  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
     43  * Redistribution of source code of any substantial portion of the Covered
     44  * Code or modification with rights to further distribute source must include
     45  * the above Copyright Notice, the above License, this list of Conditions,
     46  * and the following Disclaimer and Export Compliance provision. In addition,
     47  * Licensee must cause all Covered Code to which Licensee contributes to
     48  * contain a file documenting the changes Licensee made to create that Covered
     49  * Code and the date of any change. Licensee must include in that file the
     50  * documentation of any changes made by any predecessor Licensee. Licensee
     51  * must include a prominent statement that the modification is derived,
     52  * directly or indirectly, from Original Intel Code.
     53  *
     54  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
     55  * Redistribution of source code of any substantial portion of the Covered
     56  * Code or modification without rights to further distribute source must
     57  * include the following Disclaimer and Export Compliance provision in the
     58  * documentation and/or other materials provided with distribution. In
     59  * addition, Licensee may not authorize further sublicense of source of any
     60  * portion of the Covered Code, and must include terms to the effect that the
     61  * license from Licensee to its licensee is limited to the intellectual
     62  * property embodied in the software Licensee provides to its licensee, and
     63  * not to intellectual property embodied in modifications its licensee may
     64  * make.
     65  *
     66  * 3.3. Redistribution of Executable. Redistribution in executable form of any
     67  * substantial portion of the Covered Code or modification must reproduce the
     68  * above Copyright Notice, and the following Disclaimer and Export Compliance
     69  * provision in the documentation and/or other materials provided with the
     70  * distribution.
     71  *
     72  * 3.4. Intel retains all right, title, and interest in and to the Original
     73  * Intel Code.
     74  *
     75  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
     76  * Intel shall be used in advertising or otherwise to promote the sale, use or
     77  * other dealings in products derived from or relating to the Covered Code
     78  * without prior written authorization from Intel.
     79  *
     80  * 4. Disclaimer and Export Compliance
     81  *
     82  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
     83  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
     84  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
     85  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
     86  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
     87  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
     88  * PARTICULAR PURPOSE.
     89  *
     90  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
     91  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
     92  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
     93  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
     94  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
     95  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
     96  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
     97  * LIMITED REMEDY.
     98  *
     99  * 4.3. Licensee shall not export, either directly or indirectly, any of this
    100  * software or system incorporating such software without first obtaining any
    101  * required license or other approval from the U. S. Department of Commerce or
    102  * any other agency or department of the United States Government. In the
    103  * event Licensee exports any such software from the United States or
    104  * re-exports any such software from a foreign destination, Licensee shall
    105  * ensure that the distribution and export/re-export of the software is in
    106  * compliance with all laws, regulations, orders, or other restrictions of the
    107  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
    108  * any of its subsidiaries will export/re-export any technical data, process,
    109  * software, or service, directly or indirectly, to any country for which the
    110  * United States government or any agency thereof requires an export license,
    111  * other governmental approval, or letter of assurance, without first obtaining
    112  * such license, approval or letter.
    113  *
    114  *****************************************************************************
    115  *
    116  * Alternatively, you may choose to be licensed under the terms of the
    117  * following license:
    118  *
    119  * Redistribution and use in source and binary forms, with or without
    120  * modification, are permitted provided that the following conditions
    121  * are met:
    122  * 1. Redistributions of source code must retain the above copyright
    123  *    notice, this list of conditions, and the following disclaimer,
    124  *    without modification.
    125  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
    126  *    substantially similar to the "NO WARRANTY" disclaimer below
    127  *    ("Disclaimer") and any redistribution must be conditioned upon
    128  *    including a substantially similar Disclaimer requirement for further
    129  *    binary redistribution.
    130  * 3. Neither the names of the above-listed copyright holders nor the names
    131  *    of any contributors may be used to endorse or promote products derived
    132  *    from this software without specific prior written permission.
    133  *
    134  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    135  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    136  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    137  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    138  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    139  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    140  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    141  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    142  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    143  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    144  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    145  *
    146  * Alternatively, you may choose to be licensed under the terms of the
    147  * GNU General Public License ("GPL") version 2 as published by the Free
    148  * Software Foundation.
    149  *
    150  *****************************************************************************/
    151 
    152 #define __DTCOMPILER_H__
    153 
    154 #ifndef _DTCOMPILER
    155 #define _DTCOMPILER
    156 
    157 #include "acdisasm.h"
    158 
    159 
    160 #define ASL_FIELD_CACHE_SIZE            512
    161 #define ASL_SUBTABLE_CACHE_SIZE         128
    162 
    163 
    164 #undef DT_EXTERN
    165 
    166 #ifdef _DECLARE_DT_GLOBALS
    167 #define DT_EXTERN
    168 #define DT_INIT_GLOBAL(a,b)         (a)=(b)
    169 #else
    170 #define DT_EXTERN                   extern
    171 #define DT_INIT_GLOBAL(a,b)         (a)
    172 #endif
    173 
    174 
    175 /* Types for individual fields (one per input line) */
    176 
    177 #define DT_FIELD_TYPE_STRING            0
    178 #define DT_FIELD_TYPE_INTEGER           1
    179 #define DT_FIELD_TYPE_BUFFER            2
    180 #define DT_FIELD_TYPE_PCI_PATH          3
    181 #define DT_FIELD_TYPE_FLAG              4
    182 #define DT_FIELD_TYPE_FLAGS_INTEGER     5
    183 #define DT_FIELD_TYPE_INLINE_SUBTABLE   6
    184 #define DT_FIELD_TYPE_UUID              7
    185 #define DT_FIELD_TYPE_UNICODE           8
    186 #define DT_FIELD_TYPE_DEVICE_PATH       9
    187 #define DT_FIELD_TYPE_LABEL             10
    188 
    189 
    190 /*
    191  * Structure used for each individual field within an ACPI table
    192  */
    193 typedef struct dt_field
    194 {
    195     char                    *Name;       /* Field name (from name : value) */
    196     char                    *Value;      /* Field value (from name : value) */
    197     UINT32                  StringLength; /* Length of Value */
    198     struct dt_field         *Next;       /* Next field */
    199     struct dt_field         *NextLabel;  /* If field is a label, next label */
    200     UINT32                  Line;        /* Line number for this field */
    201     UINT32                  ByteOffset;  /* Offset in source file for field */
    202     UINT32                  NameColumn;  /* Start column for field name */
    203     UINT32                  Column;      /* Start column for field value */
    204     UINT32                  TableOffset; /* Binary offset within ACPI table */
    205     UINT8                   Flags;
    206 
    207 } DT_FIELD;
    208 
    209 /* Flags for above */
    210 
    211 #define DT_FIELD_NOT_ALLOCATED      1
    212 
    213 /*
    214  * Structure used for each individual key or value
    215  */
    216 typedef struct dt_table_unit
    217 {
    218     char                    *Value;      /* Field value (from name : value) */
    219     UINT32                  Line;        /* Line number for this field */
    220     UINT32                  Column;      /* Start column for field value */
    221 
    222 } DT_TABLE_UNIT;
    223 
    224 
    225 /*
    226  * Structure used for individual subtables within an ACPI table
    227  */
    228 typedef struct dt_subtable
    229 {
    230     struct dt_subtable      *Parent;
    231     struct dt_subtable      *Child;
    232     struct dt_subtable      *Peer;
    233     struct dt_subtable      *StackTop;
    234     UINT8                   *Buffer;
    235     UINT8                   *LengthField;
    236     char                    *Name;
    237     UINT32                  Length;
    238     UINT32                  TotalLength;
    239     UINT32                  SizeOfLengthField;
    240     UINT16                  Depth;
    241     UINT8                   Flags;
    242 
    243 } DT_SUBTABLE;
    244 
    245 
    246 /*
    247  * Globals
    248  */
    249 
    250 /* List of all field names and values from the input source */
    251 
    252 DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_FieldList, NULL);
    253 
    254 /* List of all compiled tables and subtables */
    255 
    256 DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*AslGbl_RootTable, NULL);
    257 
    258 /* Stack for subtables */
    259 
    260 DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*AslGbl_SubtableStack, NULL);
    261 
    262 /* List for defined labels */
    263 
    264 DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_LabelList, NULL);
    265 
    266 /* Current offset within the binary output table */
    267 
    268 DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_CurrentTableOffset, 0);
    269 
    270 /* Data table compiler Flex/Bison prototype */
    271 
    272 DT_EXTERN BOOLEAN           DT_INIT_GLOBAL (AslGbl_DtLexBisonPrototype, FALSE);
    273 
    274 /* Local caches */
    275 
    276 DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_SubtableCount, 0);
    277 DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*AslGbl_SubtableCacheList, NULL);
    278 DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*AslGbl_SubtableCacheNext, NULL);
    279 DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*AslGbl_SubtableCacheLast, NULL);
    280 
    281 DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_FieldCount, 0);
    282 DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*AslGbl_FieldCacheList, NULL);
    283 DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_FieldCacheNext, NULL);
    284 DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_FieldCacheLast, NULL);
    285 
    286 
    287 /* dtcompiler - main module */
    288 
    289 ACPI_STATUS
    290 DtCompileTable (
    291     DT_FIELD                **Field,
    292     ACPI_DMTABLE_INFO       *Info,
    293     DT_SUBTABLE             **RetSubtable);
    294 
    295 ACPI_STATUS
    296 DtCompileTwoSubtables (
    297     void                    **List,
    298     ACPI_DMTABLE_INFO       *TableInfo1,
    299     ACPI_DMTABLE_INFO       *TableInfo2);
    300 
    301 ACPI_STATUS
    302 DtCompilePadding (
    303     UINT32                  Length,
    304     DT_SUBTABLE             **RetSubtable);
    305 
    306 
    307 /* dtio - binary and text input/output */
    308 
    309 UINT32
    310 DtGetNextLine (
    311     FILE                    *Handle,
    312     UINT32                  Flags);
    313 
    314 /* Flags for DtGetNextLine */
    315 
    316 #define DT_ALLOW_MULTILINE_QUOTES   0x01
    317 
    318 
    319 DT_FIELD *
    320 DtScanFile (
    321     FILE                    *Handle);
    322 
    323 void
    324 DtOutputBinary (
    325     DT_SUBTABLE             *RootTable);
    326 
    327 void
    328 DtDumpSubtableList (
    329     void);
    330 
    331 void
    332 DtDumpFieldList (
    333     DT_FIELD                *Field);
    334 
    335 void
    336 DtWriteFieldToListing (
    337     UINT8                   *Buffer,
    338     DT_FIELD                *Field,
    339     UINT32                  Length);
    340 
    341 void
    342 DtWriteTableToListing (
    343     void);
    344 
    345 
    346 /* dtsubtable - compile subtables */
    347 
    348 void
    349 DtCreateSubtable (
    350     UINT8                   *Buffer,
    351     UINT32                  Length,
    352     DT_SUBTABLE             **RetSubtable);
    353 
    354 UINT32
    355 DtGetSubtableLength (
    356     DT_FIELD                *Field,
    357     ACPI_DMTABLE_INFO       *Info);
    358 
    359 void
    360 DtSetSubtableLength (
    361     DT_SUBTABLE             *Subtable);
    362 
    363 void
    364 DtPushSubtable (
    365     DT_SUBTABLE             *Subtable);
    366 
    367 void
    368 DtPopSubtable (
    369     void);
    370 
    371 DT_SUBTABLE *
    372 DtPeekSubtable (
    373     void);
    374 
    375 void
    376 DtInsertSubtable (
    377     DT_SUBTABLE             *ParentTable,
    378     DT_SUBTABLE             *Subtable);
    379 
    380 DT_SUBTABLE *
    381 DtGetNextSubtable (
    382     DT_SUBTABLE             *ParentTable,
    383     DT_SUBTABLE             *ChildTable);
    384 
    385 DT_SUBTABLE *
    386 DtGetParentSubtable (
    387     DT_SUBTABLE             *Subtable);
    388 
    389 
    390 /* dtexpress - Integer expressions and labels */
    391 
    392 ACPI_STATUS
    393 DtResolveIntegerExpression (
    394     DT_FIELD                *Field,
    395     UINT64                  *ReturnValue);
    396 
    397 UINT64
    398 DtDoOperator (
    399     UINT64                  LeftValue,
    400     UINT32                  Operator,
    401     UINT64                  RightValue);
    402 
    403 UINT64
    404 DtResolveLabel (
    405     char                    *LabelString);
    406 
    407 void
    408 DtDetectAllLabels (
    409     DT_FIELD                *FieldList);
    410 
    411 
    412 /* dtfield - Compile individual fields within a table */
    413 
    414 void
    415 DtCompileOneField (
    416     UINT8                   *Buffer,
    417     DT_FIELD                *Field,
    418     UINT32                  ByteLength,
    419     UINT8                   Type,
    420     UINT8                   Flags);
    421 
    422 void
    423 DtCompileInteger (
    424     UINT8                   *Buffer,
    425     DT_FIELD                *Field,
    426     UINT32                  ByteLength,
    427     UINT8                   Flags);
    428 
    429 UINT32
    430 DtCompileBuffer (
    431     UINT8                   *Buffer,
    432     char                    *Value,
    433     DT_FIELD                *Field,
    434     UINT32                  ByteLength);
    435 
    436 void
    437 DtCompileFlag (
    438     UINT8                   *Buffer,
    439     DT_FIELD                *Field,
    440     ACPI_DMTABLE_INFO       *Info);
    441 
    442 
    443 /* dtfield - DT_FIELD operations */
    444 
    445 void
    446 DtLinkField (
    447     DT_FIELD                *Field);
    448 
    449 void
    450 DtCreateField (
    451     DT_TABLE_UNIT           *FieldKey,
    452     DT_TABLE_UNIT           *FieldValue,
    453     UINT32                  Offset);
    454 
    455 DT_TABLE_UNIT *
    456 DtCreateTableUnit (
    457     char                    *Data,
    458     UINT32                  Line,
    459     UINT32                  Column);
    460 
    461 
    462 /* dtparser - lex/yacc files */
    463 
    464 int
    465 DtCompilerParserparse (
    466     void);
    467 
    468 UINT64
    469 DtEvaluateExpression (
    470     char                    *ExprString);
    471 
    472 void
    473 DtCompilerInitLexer (
    474     FILE                    *inFile);
    475 
    476 void
    477 DtCompilerTerminateLexer (
    478     void);
    479 
    480 int
    481 DtInitLexer (
    482     char                    *String);
    483 
    484 void
    485 DtTerminateLexer (
    486     void);
    487 
    488 char *
    489 DtGetOpName (
    490     UINT32                  ParseOpcode);
    491 
    492 
    493 /* dtutils - Miscellaneous utilities */
    494 
    495 typedef
    496 void (*DT_WALK_CALLBACK) (
    497     DT_SUBTABLE             *Subtable,
    498     void                    *Context,
    499     void                    *ReturnValue);
    500 
    501 void
    502 DtWalkTableTree (
    503     DT_SUBTABLE             *StartTable,
    504     DT_WALK_CALLBACK        UserFunction,
    505     void                    *Context,
    506     void                    *ReturnValue);
    507 
    508 void
    509 DtError (
    510     UINT8                   Level,
    511     UINT16                  MessageId,
    512     DT_FIELD                *FieldObject,
    513     char                    *ExtraMessage);
    514 
    515 void
    516 DtNameError (
    517     UINT8                   Level,
    518     UINT16                  MessageId,
    519     DT_FIELD                *FieldObject,
    520     char                    *ExtraMessage);
    521 
    522 void
    523 DtFatal (
    524     UINT16                  MessageId,
    525     DT_FIELD                *FieldObject,
    526     char                    *ExtraMessage);
    527 
    528 UINT64
    529 DtDoConstant (
    530     char                    *String);
    531 
    532 char*
    533 DtGetFieldValue (
    534     DT_FIELD                *Field);
    535 
    536 UINT8
    537 DtGetFieldType (
    538     ACPI_DMTABLE_INFO       *Info);
    539 
    540 UINT32
    541 DtGetBufferLength (
    542     char                    *Buffer);
    543 
    544 UINT32
    545 DtGetFieldLength (
    546     DT_FIELD                *Field,
    547     ACPI_DMTABLE_INFO       *Info);
    548 
    549 void
    550 DtSetTableChecksum (
    551     UINT8                   *ChecksumPointer);
    552 
    553 void
    554 DtSetTableLength(
    555     void);
    556 
    557 
    558 /* dttable - individual table compilation */
    559 
    560 ACPI_STATUS
    561 DtCompileFacs (
    562     DT_FIELD                **PFieldList);
    563 
    564 ACPI_STATUS
    565 DtCompileRsdp (
    566     DT_FIELD                **PFieldList);
    567 
    568 ACPI_STATUS
    569 DtCompileAest (
    570     void                    **PFieldList);
    571 
    572 ACPI_STATUS
    573 DtCompileApmt (
    574     void                    **PFieldList);
    575 
    576 ACPI_STATUS
    577 DtCompileAsf (
    578     void                    **PFieldList);
    579 
    580 ACPI_STATUS
    581 DtCompileAspt (
    582     void                    **PFieldList);
    583 
    584 ACPI_STATUS
    585 DtCompileCdat (
    586     void                    **PFieldList);
    587 
    588 ACPI_STATUS
    589 DtCompileCedt (
    590     void                    **PFieldList);
    591 
    592 ACPI_STATUS
    593 DtCompileCpep (
    594     void                    **PFieldList);
    595 
    596 ACPI_STATUS
    597 DtCompileCsrt (
    598     void                    **PFieldList);
    599 
    600 ACPI_STATUS
    601 DtCompileDbg2 (
    602     void                    **PFieldList);
    603 
    604 ACPI_STATUS
    605 DtCompileDmar (
    606     void                    **PFieldList);
    607 
    608 ACPI_STATUS
    609 DtCompileDrtm (
    610     void                    **PFieldList);
    611 
    612 ACPI_STATUS
    613 DtCompileEinj (
    614     void                    **PFieldList);
    615 
    616 ACPI_STATUS
    617 DtCompileErdt (
    618     void                    **PFieldList);
    619 
    620 ACPI_STATUS
    621 DtCompileErst (
    622     void                    **PFieldList);
    623 
    624 ACPI_STATUS
    625 DtCompileFadt (
    626     void                    **PFieldList);
    627 
    628 ACPI_STATUS
    629 DtCompileFpdt (
    630     void                    **PFieldList);
    631 
    632 ACPI_STATUS
    633 DtCompileGtdt (
    634     void                    **PFieldList);
    635 
    636 ACPI_STATUS
    637 DtCompileHest (
    638     void                    **PFieldList);
    639 
    640 ACPI_STATUS
    641 DtCompileHmat (
    642     void                    **PFieldList);
    643 
    644 ACPI_STATUS
    645 DtCompileIort (
    646     void                    **PFieldList);
    647 
    648 ACPI_STATUS
    649 DtCompileIvrs (
    650     void                    **PFieldList);
    651 
    652 ACPI_STATUS
    653 DtCompileLpit (
    654     void                    **PFieldList);
    655 
    656 ACPI_STATUS
    657 DtCompileMadt (
    658     void                    **PFieldList);
    659 
    660 ACPI_STATUS
    661 DtCompileMcfg (
    662     void                    **PFieldList);
    663 
    664 ACPI_STATUS
    665 DtCompileMpam (
    666     void                    **PFieldList);
    667 
    668 ACPI_STATUS
    669 DtCompileMpst (
    670     void                    **PFieldList);
    671 
    672 ACPI_STATUS
    673 DtCompileMrrm (
    674     void                    **PFieldList);
    675 
    676 ACPI_STATUS
    677 DtCompileMsct (
    678     void                    **PFieldList);
    679 
    680 ACPI_STATUS
    681 DtCompileNfit (
    682     void                    **PFieldList);
    683 
    684 ACPI_STATUS
    685 DtCompilePcct (
    686     void                    **PFieldList);
    687 
    688 ACPI_STATUS
    689 DtCompilePdtt (
    690     void                    **PFieldList);
    691 
    692 ACPI_STATUS
    693 DtCompilePhat (
    694     void                    **PFieldList);
    695 
    696 ACPI_STATUS
    697 DtCompilePmtt (
    698     void                    **PFieldList);
    699 
    700 ACPI_STATUS
    701 DtCompilePptt (
    702     void                    **PFieldList);
    703 
    704 ACPI_STATUS
    705 DtCompilePrmt (
    706     void                    **PFieldList);
    707 
    708 ACPI_STATUS
    709 DtCompileRas2 (
    710     void                    **PFieldList);
    711 
    712 ACPI_STATUS
    713 DtCompileRgrt (
    714     void                    **PFieldList);
    715 
    716 ACPI_STATUS
    717 DtCompileRhct (
    718     void                    **PFieldList);
    719 
    720 ACPI_STATUS
    721 DtCompileRimt (
    722     void                    **PFieldList);
    723 
    724 ACPI_STATUS
    725 DtCompileRsdt (
    726     void                    **PFieldList);
    727 
    728 ACPI_STATUS
    729 DtCompileS3pt (
    730     DT_FIELD                **PFieldList);
    731 
    732 ACPI_STATUS
    733 DtCompileSdev (
    734     void                    **PFieldList);
    735 
    736 ACPI_STATUS
    737 DtCompileSlic (
    738     void                    **PFieldList);
    739 
    740 ACPI_STATUS
    741 DtCompileSlit (
    742     void                    **PFieldList);
    743 
    744 ACPI_STATUS
    745 DtCompileSrat (
    746     void                    **PFieldList);
    747 
    748 ACPI_STATUS
    749 DtCompileStao (
    750     void                    **PFieldList);
    751 
    752 ACPI_STATUS
    753 DtCompileSvkl (
    754     void                    **PFieldList);
    755 
    756 ACPI_STATUS
    757 DtCompileTcpa (
    758     void                    **PFieldList);
    759 
    760 ACPI_STATUS
    761 DtCompileTpm2 (
    762     void                    **PFieldList);
    763 
    764 ACPI_STATUS
    765 DtCompileUefi (
    766     void                    **PFieldList);
    767 
    768 ACPI_STATUS
    769 DtCompileViot (
    770     void                    **PFieldList);
    771 
    772 ACPI_STATUS
    773 DtCompileWdat (
    774     void                    **PFieldList);
    775 
    776 ACPI_STATUS
    777 DtCompileWpbt (
    778     void                    **PFieldList);
    779 
    780 ACPI_STATUS
    781 DtCompileXsdt (
    782     void                    **PFieldList);
    783 
    784 ACPI_STATUS
    785 DtCompileGeneric (
    786     void                    **PFieldList,
    787     char                    *TermFieldName,
    788     UINT32                  *PFieldLength);
    789 
    790 ACPI_DMTABLE_INFO *
    791 DtGetGenericTableInfo (
    792     char                    *Name);
    793 
    794 /* ACPI Table templates */
    795 
    796 extern const unsigned char  TemplateAest[];
    797 extern const unsigned char  TemplateAgdi[];
    798 extern const unsigned char  TemplateApmt[];
    799 extern const unsigned char  TemplateAsf[];
    800 extern const unsigned char  TemplateAspt[];
    801 extern const unsigned char  TemplateBoot[];
    802 extern const unsigned char  TemplateBdat[];
    803 extern const unsigned char  TemplateBert[];
    804 extern const unsigned char  TemplateBgrt[];
    805 extern const unsigned char  TemplateCcel[];
    806 extern const unsigned char  TemplateCdat[];
    807 extern const unsigned char  TemplateCedt[];
    808 extern const unsigned char  TemplateCpep[];
    809 extern const unsigned char  TemplateCsrt[];
    810 extern const unsigned char  TemplateDbg2[];
    811 extern const unsigned char  TemplateDbgp[];
    812 extern const unsigned char  TemplateDmar[];
    813 extern const unsigned char  TemplateDrtm[];
    814 extern const unsigned char  TemplateEcdt[];
    815 extern const unsigned char  TemplateEinj[];
    816 extern const unsigned char  TemplateErdt[];
    817 extern const unsigned char  TemplateErst[];
    818 extern const unsigned char  TemplateFadt[];
    819 extern const unsigned char  TemplateFpdt[];
    820 extern const unsigned char  TemplateGtdt[];
    821 extern const unsigned char  TemplateHest[];
    822 extern const unsigned char  TemplateHmat[];
    823 extern const unsigned char  TemplateHpet[];
    824 extern const unsigned char  TemplateIort[];
    825 extern const unsigned char  TemplateIvrs[];
    826 extern const unsigned char  TemplateLpit[];
    827 extern const unsigned char  TemplateMadt[];
    828 extern const unsigned char  TemplateMcfg[];
    829 extern const unsigned char  TemplateMchi[];
    830 extern const unsigned char  TemplateMpam[];
    831 extern const unsigned char  TemplateMpst[];
    832 extern const unsigned char  TemplateMrrm[];
    833 extern const unsigned char  TemplateMsct[];
    834 extern const unsigned char  TemplateMsdm[];
    835 extern const unsigned char  TemplateNfit[];
    836 extern const unsigned char  TemplatePcct[];
    837 extern const unsigned char  TemplatePdtt[];
    838 extern const unsigned char  TemplatePhat[];
    839 extern const unsigned char  TemplatePmtt[];
    840 extern const unsigned char  TemplatePptt[];
    841 extern const unsigned char  TemplatePrmt[];
    842 extern const unsigned char  TemplateRasf[];
    843 extern const unsigned char  TemplateRas2[];
    844 extern const unsigned char  TemplateRgrt[];
    845 extern const unsigned char  TemplateRhct[];
    846 extern const unsigned char  TemplateRimt[];
    847 extern const unsigned char  TemplateRsdt[];
    848 extern const unsigned char  TemplateS3pt[];
    849 extern const unsigned char  TemplateSbst[];
    850 extern const unsigned char  TemplateSdei[];
    851 extern const unsigned char  TemplateSdev[];
    852 extern const unsigned char  TemplateSlic[];
    853 extern const unsigned char  TemplateSlit[];
    854 extern const unsigned char  TemplateSpcr[];
    855 extern const unsigned char  TemplateSpmi[];
    856 extern const unsigned char  TemplateSrat[];
    857 extern const unsigned char  TemplateStao[];
    858 extern const unsigned char  TemplateSvkl[];
    859 extern const unsigned char  TemplateTcpa[];
    860 extern const unsigned char  TemplateTdel[];
    861 extern const unsigned char  TemplateTpm2[];
    862 extern const unsigned char  TemplateUefi[];
    863 extern const unsigned char  TemplateViot[];
    864 extern const unsigned char  TemplateWaet[];
    865 extern const unsigned char  TemplateWdat[];
    866 extern const unsigned char  TemplateWddt[];
    867 extern const unsigned char  TemplateWdrt[];
    868 extern const unsigned char  TemplateWpbt[];
    869 extern const unsigned char  TemplateWsmt[];
    870 extern const unsigned char  TemplateXenv[];
    871 extern const unsigned char  TemplateXsdt[];
    872 
    873 #endif
    874