10d02842fSSascha Wildner /******************************************************************************
20d02842fSSascha Wildner  *
30d02842fSSascha Wildner  * Module Name: dtcompiler.h - header for data table compiler
40d02842fSSascha Wildner  *
50d02842fSSascha Wildner  *****************************************************************************/
60d02842fSSascha Wildner 
70d02842fSSascha Wildner /*
8fe7b5cb4SSascha Wildner  * Copyright (C) 2000 - 2015, Intel Corp.
90d02842fSSascha Wildner  * All rights reserved.
100d02842fSSascha Wildner  *
110d02842fSSascha Wildner  * Redistribution and use in source and binary forms, with or without
120d02842fSSascha Wildner  * modification, are permitted provided that the following conditions
130d02842fSSascha Wildner  * are met:
140d02842fSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
150d02842fSSascha Wildner  *    notice, this list of conditions, and the following disclaimer,
160d02842fSSascha Wildner  *    without modification.
170d02842fSSascha Wildner  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
180d02842fSSascha Wildner  *    substantially similar to the "NO WARRANTY" disclaimer below
190d02842fSSascha Wildner  *    ("Disclaimer") and any redistribution must be conditioned upon
200d02842fSSascha Wildner  *    including a substantially similar Disclaimer requirement for further
210d02842fSSascha Wildner  *    binary redistribution.
220d02842fSSascha Wildner  * 3. Neither the names of the above-listed copyright holders nor the names
230d02842fSSascha Wildner  *    of any contributors may be used to endorse or promote products derived
240d02842fSSascha Wildner  *    from this software without specific prior written permission.
250d02842fSSascha Wildner  *
260d02842fSSascha Wildner  * Alternatively, this software may be distributed under the terms of the
270d02842fSSascha Wildner  * GNU General Public License ("GPL") version 2 as published by the Free
280d02842fSSascha Wildner  * Software Foundation.
290d02842fSSascha Wildner  *
300d02842fSSascha Wildner  * NO WARRANTY
310d02842fSSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
320d02842fSSascha Wildner  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
330d02842fSSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
340d02842fSSascha Wildner  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
350d02842fSSascha Wildner  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
360d02842fSSascha Wildner  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
370d02842fSSascha Wildner  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
380d02842fSSascha Wildner  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
390d02842fSSascha Wildner  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
400d02842fSSascha Wildner  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
410d02842fSSascha Wildner  * POSSIBILITY OF SUCH DAMAGES.
420d02842fSSascha Wildner  */
430d02842fSSascha Wildner 
440d02842fSSascha Wildner #define __DTCOMPILER_H__
450d02842fSSascha Wildner 
460d02842fSSascha Wildner #ifndef _DTCOMPILER
470d02842fSSascha Wildner #define _DTCOMPILER
480d02842fSSascha Wildner 
490d02842fSSascha Wildner #include <stdio.h>
500d02842fSSascha Wildner #include "acdisasm.h"
510d02842fSSascha Wildner 
520d02842fSSascha Wildner 
5379eafdd7SSascha Wildner #define ASL_FIELD_CACHE_SIZE            512
5479eafdd7SSascha Wildner #define ASL_SUBTABLE_CACHE_SIZE         128
5579eafdd7SSascha Wildner 
5679eafdd7SSascha Wildner 
570d02842fSSascha Wildner #undef DT_EXTERN
580d02842fSSascha Wildner 
590d02842fSSascha Wildner #ifdef _DECLARE_DT_GLOBALS
600d02842fSSascha Wildner #define DT_EXTERN
610d02842fSSascha Wildner #define DT_INIT_GLOBAL(a,b)         (a)=(b)
620d02842fSSascha Wildner #else
630d02842fSSascha Wildner #define DT_EXTERN                   extern
640d02842fSSascha Wildner #define DT_INIT_GLOBAL(a,b)         (a)
650d02842fSSascha Wildner #endif
660d02842fSSascha Wildner 
670d02842fSSascha Wildner 
680d02842fSSascha Wildner /* Types for individual fields (one per input line) */
690d02842fSSascha Wildner 
700d02842fSSascha Wildner #define DT_FIELD_TYPE_STRING            0
710d02842fSSascha Wildner #define DT_FIELD_TYPE_INTEGER           1
720d02842fSSascha Wildner #define DT_FIELD_TYPE_BUFFER            2
730d02842fSSascha Wildner #define DT_FIELD_TYPE_PCI_PATH          3
740d02842fSSascha Wildner #define DT_FIELD_TYPE_FLAG              4
750d02842fSSascha Wildner #define DT_FIELD_TYPE_FLAGS_INTEGER     5
760d02842fSSascha Wildner #define DT_FIELD_TYPE_INLINE_SUBTABLE   6
770d02842fSSascha Wildner #define DT_FIELD_TYPE_UUID              7
780d02842fSSascha Wildner #define DT_FIELD_TYPE_UNICODE           8
790d02842fSSascha Wildner #define DT_FIELD_TYPE_DEVICE_PATH       9
800d02842fSSascha Wildner #define DT_FIELD_TYPE_LABEL             10
810d02842fSSascha Wildner 
820d02842fSSascha Wildner 
830d02842fSSascha Wildner /*
840d02842fSSascha Wildner  * Structure used for each individual field within an ACPI table
850d02842fSSascha Wildner  */
860d02842fSSascha Wildner typedef struct dt_field
870d02842fSSascha Wildner {
880d02842fSSascha Wildner     char                    *Name;       /* Field name (from name : value) */
890d02842fSSascha Wildner     char                    *Value;      /* Field value (from name : value) */
905943f66cSSascha Wildner     UINT32                  StringLength;/* Length of Value */
910d02842fSSascha Wildner     struct dt_field         *Next;       /* Next field */
920d02842fSSascha Wildner     struct dt_field         *NextLabel;  /* If field is a label, next label */
930d02842fSSascha Wildner     UINT32                  Line;        /* Line number for this field */
940d02842fSSascha Wildner     UINT32                  ByteOffset;  /* Offset in source file for field */
950d02842fSSascha Wildner     UINT32                  NameColumn;  /* Start column for field name */
960d02842fSSascha Wildner     UINT32                  Column;      /* Start column for field value */
970d02842fSSascha Wildner     UINT32                  TableOffset; /* Binary offset within ACPI table */
980d02842fSSascha Wildner     UINT8                   Flags;
990d02842fSSascha Wildner 
1000d02842fSSascha Wildner } DT_FIELD;
1010d02842fSSascha Wildner 
1020d02842fSSascha Wildner /* Flags for above */
1030d02842fSSascha Wildner 
1040d02842fSSascha Wildner #define DT_FIELD_NOT_ALLOCATED      1
1050d02842fSSascha Wildner 
1060d02842fSSascha Wildner 
1070d02842fSSascha Wildner /*
1080d02842fSSascha Wildner  * Structure used for individual subtables within an ACPI table
1090d02842fSSascha Wildner  */
1100d02842fSSascha Wildner typedef struct dt_subtable
1110d02842fSSascha Wildner {
1120d02842fSSascha Wildner     struct dt_subtable      *Parent;
1130d02842fSSascha Wildner     struct dt_subtable      *Child;
1140d02842fSSascha Wildner     struct dt_subtable      *Peer;
1150d02842fSSascha Wildner     struct dt_subtable      *StackTop;
1160d02842fSSascha Wildner     UINT8                   *Buffer;
1170d02842fSSascha Wildner     UINT8                   *LengthField;
118*896f2e3aSSascha Wildner     char                    *Name;
1190d02842fSSascha Wildner     UINT32                  Length;
1200d02842fSSascha Wildner     UINT32                  TotalLength;
1210d02842fSSascha Wildner     UINT32                  SizeOfLengthField;
1220d02842fSSascha Wildner     UINT16                  Depth;
1230d02842fSSascha Wildner     UINT8                   Flags;
1240d02842fSSascha Wildner 
1250d02842fSSascha Wildner } DT_SUBTABLE;
1260d02842fSSascha Wildner 
1270d02842fSSascha Wildner 
1280d02842fSSascha Wildner /*
1290d02842fSSascha Wildner  * Globals
1300d02842fSSascha Wildner  */
1310d02842fSSascha Wildner 
1320d02842fSSascha Wildner /* List of all field names and values from the input source */
1330d02842fSSascha Wildner 
1340d02842fSSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldList, NULL);
1350d02842fSSascha Wildner 
1360d02842fSSascha Wildner /* List of all compiled tables and subtables */
1370d02842fSSascha Wildner 
1380d02842fSSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_RootTable, NULL);
1390d02842fSSascha Wildner 
1400d02842fSSascha Wildner /* Stack for subtables */
1410d02842fSSascha Wildner 
1420d02842fSSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableStack, NULL);
1430d02842fSSascha Wildner 
1440d02842fSSascha Wildner /* List for defined labels */
1450d02842fSSascha Wildner 
1460d02842fSSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_LabelList, NULL);
1470d02842fSSascha Wildner 
1480d02842fSSascha Wildner /* Current offset within the binary output table */
1490d02842fSSascha Wildner 
1500d02842fSSascha Wildner DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_CurrentTableOffset, 0);
1510d02842fSSascha Wildner 
15279eafdd7SSascha Wildner /* Local caches */
15379eafdd7SSascha Wildner 
15479eafdd7SSascha Wildner DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_SubtableCount, 0);
15579eafdd7SSascha Wildner DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_SubtableCacheList, NULL);
15679eafdd7SSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheNext, NULL);
15779eafdd7SSascha Wildner DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheLast, NULL);
15879eafdd7SSascha Wildner 
15979eafdd7SSascha Wildner DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_FieldCount, 0);
16079eafdd7SSascha Wildner DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_FieldCacheList, NULL);
16179eafdd7SSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheNext, NULL);
16279eafdd7SSascha Wildner DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheLast, NULL);
16379eafdd7SSascha Wildner 
1640d02842fSSascha Wildner 
1650d02842fSSascha Wildner /* dtcompiler - main module */
1660d02842fSSascha Wildner 
1670d02842fSSascha Wildner ACPI_STATUS
1680d02842fSSascha Wildner DtCompileTable (
1690d02842fSSascha Wildner     DT_FIELD                **Field,
1700d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info,
1710d02842fSSascha Wildner     DT_SUBTABLE             **RetSubtable,
1720d02842fSSascha Wildner     BOOLEAN                 Required);
1730d02842fSSascha Wildner 
174*896f2e3aSSascha Wildner ACPI_STATUS
175*896f2e3aSSascha Wildner DtCompilePadding (
176*896f2e3aSSascha Wildner     UINT32                  Length,
177*896f2e3aSSascha Wildner     DT_SUBTABLE             **RetSubtable);
178*896f2e3aSSascha Wildner 
1790d02842fSSascha Wildner 
1800d02842fSSascha Wildner /* dtio - binary and text input/output */
1810d02842fSSascha Wildner 
1820d02842fSSascha Wildner UINT32
1830d02842fSSascha Wildner DtGetNextLine (
1840d02842fSSascha Wildner     FILE                    *Handle);
1850d02842fSSascha Wildner 
1860d02842fSSascha Wildner DT_FIELD *
1870d02842fSSascha Wildner DtScanFile (
1880d02842fSSascha Wildner     FILE                    *Handle);
1890d02842fSSascha Wildner 
1900d02842fSSascha Wildner void
1910d02842fSSascha Wildner DtOutputBinary (
1920d02842fSSascha Wildner     DT_SUBTABLE             *RootTable);
1930d02842fSSascha Wildner 
1940d02842fSSascha Wildner void
1950d02842fSSascha Wildner DtDumpSubtableList (
1960d02842fSSascha Wildner     void);
1970d02842fSSascha Wildner 
1980d02842fSSascha Wildner void
1990d02842fSSascha Wildner DtDumpFieldList (
2000d02842fSSascha Wildner     DT_FIELD                *Field);
2010d02842fSSascha Wildner 
2020d02842fSSascha Wildner void
2030d02842fSSascha Wildner DtWriteFieldToListing (
2040d02842fSSascha Wildner     UINT8                   *Buffer,
2050d02842fSSascha Wildner     DT_FIELD                *Field,
2060d02842fSSascha Wildner     UINT32                  Length);
2070d02842fSSascha Wildner 
2080d02842fSSascha Wildner void
2090d02842fSSascha Wildner DtWriteTableToListing (
2100d02842fSSascha Wildner     void);
2110d02842fSSascha Wildner 
2120d02842fSSascha Wildner 
2130d02842fSSascha Wildner /* dtsubtable - compile subtables */
2140d02842fSSascha Wildner 
2150d02842fSSascha Wildner void
2160d02842fSSascha Wildner DtCreateSubtable (
2170d02842fSSascha Wildner     UINT8                   *Buffer,
2180d02842fSSascha Wildner     UINT32                  Length,
2190d02842fSSascha Wildner     DT_SUBTABLE             **RetSubtable);
2200d02842fSSascha Wildner 
2210d02842fSSascha Wildner UINT32
2220d02842fSSascha Wildner DtGetSubtableLength (
2230d02842fSSascha Wildner     DT_FIELD                *Field,
2240d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
2250d02842fSSascha Wildner 
2260d02842fSSascha Wildner void
2270d02842fSSascha Wildner DtSetSubtableLength (
2280d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2290d02842fSSascha Wildner 
2300d02842fSSascha Wildner void
2310d02842fSSascha Wildner DtPushSubtable (
2320d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2330d02842fSSascha Wildner 
2340d02842fSSascha Wildner void
2350d02842fSSascha Wildner DtPopSubtable (
2360d02842fSSascha Wildner     void);
2370d02842fSSascha Wildner 
2380d02842fSSascha Wildner DT_SUBTABLE *
2390d02842fSSascha Wildner DtPeekSubtable (
2400d02842fSSascha Wildner     void);
2410d02842fSSascha Wildner 
2420d02842fSSascha Wildner void
2430d02842fSSascha Wildner DtInsertSubtable (
2440d02842fSSascha Wildner     DT_SUBTABLE             *ParentTable,
2450d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2460d02842fSSascha Wildner 
2470d02842fSSascha Wildner DT_SUBTABLE *
2480d02842fSSascha Wildner DtGetNextSubtable (
2490d02842fSSascha Wildner     DT_SUBTABLE             *ParentTable,
2500d02842fSSascha Wildner     DT_SUBTABLE             *ChildTable);
2510d02842fSSascha Wildner 
2520d02842fSSascha Wildner DT_SUBTABLE *
2530d02842fSSascha Wildner DtGetParentSubtable (
2540d02842fSSascha Wildner     DT_SUBTABLE             *Subtable);
2550d02842fSSascha Wildner 
2560d02842fSSascha Wildner 
2570d02842fSSascha Wildner /* dtexpress - Integer expressions and labels */
2580d02842fSSascha Wildner 
2590d02842fSSascha Wildner ACPI_STATUS
2600d02842fSSascha Wildner DtResolveIntegerExpression (
2610d02842fSSascha Wildner     DT_FIELD                *Field,
2620d02842fSSascha Wildner     UINT64                  *ReturnValue);
2630d02842fSSascha Wildner 
2640d02842fSSascha Wildner UINT64
2650d02842fSSascha Wildner DtDoOperator (
2660d02842fSSascha Wildner     UINT64                  LeftValue,
2670d02842fSSascha Wildner     UINT32                  Operator,
2680d02842fSSascha Wildner     UINT64                  RightValue);
2690d02842fSSascha Wildner 
2700d02842fSSascha Wildner UINT64
2710d02842fSSascha Wildner DtResolveLabel (
2720d02842fSSascha Wildner     char                    *LabelString);
2730d02842fSSascha Wildner 
2740d02842fSSascha Wildner void
2750d02842fSSascha Wildner DtDetectAllLabels (
2760d02842fSSascha Wildner     DT_FIELD                *FieldList);
2770d02842fSSascha Wildner 
2780d02842fSSascha Wildner 
2790d02842fSSascha Wildner /* dtfield - Compile individual fields within a table */
2800d02842fSSascha Wildner 
2810d02842fSSascha Wildner void
2820d02842fSSascha Wildner DtCompileOneField (
2830d02842fSSascha Wildner     UINT8                   *Buffer,
2840d02842fSSascha Wildner     DT_FIELD                *Field,
2850d02842fSSascha Wildner     UINT32                  ByteLength,
2860d02842fSSascha Wildner     UINT8                   Type,
2870d02842fSSascha Wildner     UINT8                   Flags);
2880d02842fSSascha Wildner 
2890d02842fSSascha Wildner void
2900d02842fSSascha Wildner DtCompileInteger (
2910d02842fSSascha Wildner     UINT8                   *Buffer,
2920d02842fSSascha Wildner     DT_FIELD                *Field,
2930d02842fSSascha Wildner     UINT32                  ByteLength,
2940d02842fSSascha Wildner     UINT8                   Flags);
2950d02842fSSascha Wildner 
2960d02842fSSascha Wildner UINT32
2970d02842fSSascha Wildner DtCompileBuffer (
2980d02842fSSascha Wildner     UINT8                   *Buffer,
2990d02842fSSascha Wildner     char                    *Value,
3000d02842fSSascha Wildner     DT_FIELD                *Field,
3010d02842fSSascha Wildner     UINT32                  ByteLength);
3020d02842fSSascha Wildner 
3030d02842fSSascha Wildner void
3040d02842fSSascha Wildner DtCompileFlag (
3050d02842fSSascha Wildner     UINT8                   *Buffer,
3060d02842fSSascha Wildner     DT_FIELD                *Field,
3070d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
3080d02842fSSascha Wildner 
3090d02842fSSascha Wildner 
3100d02842fSSascha Wildner /* dtparser - lex/yacc files */
3110d02842fSSascha Wildner 
3120d02842fSSascha Wildner UINT64
3130d02842fSSascha Wildner DtEvaluateExpression (
3140d02842fSSascha Wildner     char                    *ExprString);
3150d02842fSSascha Wildner 
3160d02842fSSascha Wildner int
3170d02842fSSascha Wildner DtInitLexer (
3180d02842fSSascha Wildner     char                    *String);
3190d02842fSSascha Wildner 
3200d02842fSSascha Wildner void
3210d02842fSSascha Wildner DtTerminateLexer (
3220d02842fSSascha Wildner     void);
3230d02842fSSascha Wildner 
3240d02842fSSascha Wildner char *
3250d02842fSSascha Wildner DtGetOpName (
3260d02842fSSascha Wildner     UINT32                  ParseOpcode);
3270d02842fSSascha Wildner 
3280d02842fSSascha Wildner 
3290d02842fSSascha Wildner /* dtutils - Miscellaneous utilities */
3300d02842fSSascha Wildner 
3310d02842fSSascha Wildner typedef
3320d02842fSSascha Wildner void (*DT_WALK_CALLBACK) (
3330d02842fSSascha Wildner     DT_SUBTABLE             *Subtable,
3340d02842fSSascha Wildner     void                    *Context,
3350d02842fSSascha Wildner     void                    *ReturnValue);
3360d02842fSSascha Wildner 
3370d02842fSSascha Wildner void
3380d02842fSSascha Wildner DtWalkTableTree (
3390d02842fSSascha Wildner     DT_SUBTABLE             *StartTable,
3400d02842fSSascha Wildner     DT_WALK_CALLBACK        UserFunction,
3410d02842fSSascha Wildner     void                    *Context,
3420d02842fSSascha Wildner     void                    *ReturnValue);
3430d02842fSSascha Wildner 
3440d02842fSSascha Wildner void
3450d02842fSSascha Wildner DtError (
3460d02842fSSascha Wildner     UINT8                   Level,
3479e1c0880SSascha Wildner     UINT16                  MessageId,
3480d02842fSSascha Wildner     DT_FIELD                *FieldObject,
3490d02842fSSascha Wildner     char                    *ExtraMessage);
3500d02842fSSascha Wildner 
3510d02842fSSascha Wildner void
3520d02842fSSascha Wildner DtNameError (
3530d02842fSSascha Wildner     UINT8                   Level,
3549e1c0880SSascha Wildner     UINT16                  MessageId,
3550d02842fSSascha Wildner     DT_FIELD                *FieldObject,
3560d02842fSSascha Wildner     char                    *ExtraMessage);
3570d02842fSSascha Wildner 
3580d02842fSSascha Wildner void
3590d02842fSSascha Wildner DtFatal (
3609e1c0880SSascha Wildner     UINT16                  MessageId,
3610d02842fSSascha Wildner     DT_FIELD                *FieldObject,
3620d02842fSSascha Wildner     char                    *ExtraMessage);
3630d02842fSSascha Wildner 
3640d02842fSSascha Wildner ACPI_STATUS
3650d02842fSSascha Wildner DtStrtoul64 (
3660d02842fSSascha Wildner     char                    *String,
3670d02842fSSascha Wildner     UINT64                  *ReturnInteger);
3680d02842fSSascha Wildner 
3690d02842fSSascha Wildner char*
3700d02842fSSascha Wildner DtGetFieldValue (
3710d02842fSSascha Wildner     DT_FIELD                *Field);
3720d02842fSSascha Wildner 
3730d02842fSSascha Wildner UINT8
3740d02842fSSascha Wildner DtGetFieldType (
3750d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
3760d02842fSSascha Wildner 
3770d02842fSSascha Wildner UINT32
3780d02842fSSascha Wildner DtGetBufferLength (
3790d02842fSSascha Wildner     char                    *Buffer);
3800d02842fSSascha Wildner 
3810d02842fSSascha Wildner UINT32
3820d02842fSSascha Wildner DtGetFieldLength (
3830d02842fSSascha Wildner     DT_FIELD                *Field,
3840d02842fSSascha Wildner     ACPI_DMTABLE_INFO       *Info);
3850d02842fSSascha Wildner 
3860d02842fSSascha Wildner void
3870d02842fSSascha Wildner DtSetTableChecksum (
3880d02842fSSascha Wildner     UINT8                   *ChecksumPointer);
3890d02842fSSascha Wildner 
3900d02842fSSascha Wildner void
3910d02842fSSascha Wildner DtSetTableLength(
3920d02842fSSascha Wildner     void);
3930d02842fSSascha Wildner 
39479eafdd7SSascha Wildner DT_SUBTABLE *
39579eafdd7SSascha Wildner UtSubtableCacheCalloc (
39679eafdd7SSascha Wildner     void);
39779eafdd7SSascha Wildner 
39879eafdd7SSascha Wildner DT_FIELD *
39979eafdd7SSascha Wildner UtFieldCacheCalloc (
40079eafdd7SSascha Wildner     void);
40179eafdd7SSascha Wildner 
4020d02842fSSascha Wildner void
40379eafdd7SSascha Wildner DtDeleteCaches (
4040d02842fSSascha Wildner     void);
4050d02842fSSascha Wildner 
4060d02842fSSascha Wildner 
4070d02842fSSascha Wildner /* dttable - individual table compilation */
4080d02842fSSascha Wildner 
4090d02842fSSascha Wildner ACPI_STATUS
4100d02842fSSascha Wildner DtCompileFacs (
4110d02842fSSascha Wildner     DT_FIELD                **PFieldList);
4120d02842fSSascha Wildner 
4130d02842fSSascha Wildner ACPI_STATUS
4140d02842fSSascha Wildner DtCompileRsdp (
4150d02842fSSascha Wildner     DT_FIELD                **PFieldList);
4160d02842fSSascha Wildner 
4170d02842fSSascha Wildner ACPI_STATUS
4180d02842fSSascha Wildner DtCompileAsf (
4190d02842fSSascha Wildner     void                    **PFieldList);
4200d02842fSSascha Wildner 
4210d02842fSSascha Wildner ACPI_STATUS
4220d02842fSSascha Wildner DtCompileCpep (
4230d02842fSSascha Wildner     void                    **PFieldList);
4240d02842fSSascha Wildner 
4250d02842fSSascha Wildner ACPI_STATUS
4260d02842fSSascha Wildner DtCompileCsrt (
4270d02842fSSascha Wildner     void                    **PFieldList);
4280d02842fSSascha Wildner 
4290d02842fSSascha Wildner ACPI_STATUS
4300d02842fSSascha Wildner DtCompileDbg2 (
4310d02842fSSascha Wildner     void                    **PFieldList);
4320d02842fSSascha Wildner 
4330d02842fSSascha Wildner ACPI_STATUS
4340d02842fSSascha Wildner DtCompileDmar (
4350d02842fSSascha Wildner     void                    **PFieldList);
4360d02842fSSascha Wildner 
4370d02842fSSascha Wildner ACPI_STATUS
438*896f2e3aSSascha Wildner DtCompileDrtm (
439*896f2e3aSSascha Wildner     void                    **PFieldList);
440*896f2e3aSSascha Wildner 
441*896f2e3aSSascha Wildner ACPI_STATUS
4420d02842fSSascha Wildner DtCompileEinj (
4430d02842fSSascha Wildner     void                    **PFieldList);
4440d02842fSSascha Wildner 
4450d02842fSSascha Wildner ACPI_STATUS
4460d02842fSSascha Wildner DtCompileErst (
4470d02842fSSascha Wildner     void                    **PFieldList);
4480d02842fSSascha Wildner 
4490d02842fSSascha Wildner ACPI_STATUS
4500d02842fSSascha Wildner DtCompileFadt (
4510d02842fSSascha Wildner     void                    **PFieldList);
4520d02842fSSascha Wildner 
4530d02842fSSascha Wildner ACPI_STATUS
4540d02842fSSascha Wildner DtCompileFpdt (
4550d02842fSSascha Wildner     void                    **PFieldList);
4560d02842fSSascha Wildner 
4570d02842fSSascha Wildner ACPI_STATUS
458066b6da2SSascha Wildner DtCompileGtdt (
459066b6da2SSascha Wildner     void                    **PFieldList);
460066b6da2SSascha Wildner 
461066b6da2SSascha Wildner ACPI_STATUS
4620d02842fSSascha Wildner DtCompileHest (
4630d02842fSSascha Wildner     void                    **PFieldList);
4640d02842fSSascha Wildner 
4650d02842fSSascha Wildner ACPI_STATUS
466*896f2e3aSSascha Wildner DtCompileIort (
467*896f2e3aSSascha Wildner     void                    **PFieldList);
468*896f2e3aSSascha Wildner 
469*896f2e3aSSascha Wildner ACPI_STATUS
4700d02842fSSascha Wildner DtCompileIvrs (
4710d02842fSSascha Wildner     void                    **PFieldList);
4720d02842fSSascha Wildner 
4730d02842fSSascha Wildner ACPI_STATUS
4749e1c0880SSascha Wildner DtCompileLpit (
4759e1c0880SSascha Wildner     void                    **PFieldList);
4769e1c0880SSascha Wildner 
4779e1c0880SSascha Wildner ACPI_STATUS
4780d02842fSSascha Wildner DtCompileMadt (
4790d02842fSSascha Wildner     void                    **PFieldList);
4800d02842fSSascha Wildner 
4810d02842fSSascha Wildner ACPI_STATUS
4820d02842fSSascha Wildner DtCompileMcfg (
4830d02842fSSascha Wildner     void                    **PFieldList);
4840d02842fSSascha Wildner 
4850d02842fSSascha Wildner ACPI_STATUS
4860d02842fSSascha Wildner DtCompileMpst (
4870d02842fSSascha Wildner     void                    **PFieldList);
4880d02842fSSascha Wildner 
4890d02842fSSascha Wildner ACPI_STATUS
4900d02842fSSascha Wildner DtCompileMsct (
4910d02842fSSascha Wildner     void                    **PFieldList);
4920d02842fSSascha Wildner 
4930d02842fSSascha Wildner ACPI_STATUS
4940d02842fSSascha Wildner DtCompileMtmr (
4950d02842fSSascha Wildner     void                    **PFieldList);
4960d02842fSSascha Wildner 
4970d02842fSSascha Wildner ACPI_STATUS
498*896f2e3aSSascha Wildner DtCompileNfit (
499*896f2e3aSSascha Wildner     void                    **PFieldList);
500*896f2e3aSSascha Wildner 
501*896f2e3aSSascha Wildner ACPI_STATUS
5020d02842fSSascha Wildner DtCompilePmtt (
5030d02842fSSascha Wildner     void                    **PFieldList);
5040d02842fSSascha Wildner 
5050d02842fSSascha Wildner ACPI_STATUS
5060d02842fSSascha Wildner DtCompilePcct (
5070d02842fSSascha Wildner     void                    **PFieldList);
5080d02842fSSascha Wildner 
5090d02842fSSascha Wildner ACPI_STATUS
5100d02842fSSascha Wildner DtCompileRsdt (
5110d02842fSSascha Wildner     void                    **PFieldList);
5120d02842fSSascha Wildner 
5130d02842fSSascha Wildner ACPI_STATUS
5140d02842fSSascha Wildner DtCompileS3pt (
5150d02842fSSascha Wildner     DT_FIELD                **PFieldList);
5160d02842fSSascha Wildner 
5170d02842fSSascha Wildner ACPI_STATUS
5180d02842fSSascha Wildner DtCompileSlic (
5190d02842fSSascha Wildner     void                    **PFieldList);
5200d02842fSSascha Wildner 
5210d02842fSSascha Wildner ACPI_STATUS
5220d02842fSSascha Wildner DtCompileSlit (
5230d02842fSSascha Wildner     void                    **PFieldList);
5240d02842fSSascha Wildner 
5250d02842fSSascha Wildner ACPI_STATUS
5260d02842fSSascha Wildner DtCompileSrat (
5270d02842fSSascha Wildner     void                    **PFieldList);
5280d02842fSSascha Wildner 
5290d02842fSSascha Wildner ACPI_STATUS
530*896f2e3aSSascha Wildner DtCompileStao (
531*896f2e3aSSascha Wildner     void                    **PFieldList);
532*896f2e3aSSascha Wildner 
533*896f2e3aSSascha Wildner ACPI_STATUS
5340d02842fSSascha Wildner DtCompileUefi (
5350d02842fSSascha Wildner     void                    **PFieldList);
5360d02842fSSascha Wildner 
5370d02842fSSascha Wildner ACPI_STATUS
5380d02842fSSascha Wildner DtCompileVrtc (
5390d02842fSSascha Wildner     void                    **PFieldList);
5400d02842fSSascha Wildner 
5410d02842fSSascha Wildner ACPI_STATUS
5420d02842fSSascha Wildner DtCompileWdat (
5430d02842fSSascha Wildner     void                    **PFieldList);
5440d02842fSSascha Wildner 
5450d02842fSSascha Wildner ACPI_STATUS
546*896f2e3aSSascha Wildner DtCompileWpbt (
547*896f2e3aSSascha Wildner     void                    **PFieldList);
548*896f2e3aSSascha Wildner 
549*896f2e3aSSascha Wildner ACPI_STATUS
5500d02842fSSascha Wildner DtCompileXsdt (
5510d02842fSSascha Wildner     void                    **PFieldList);
5520d02842fSSascha Wildner 
5530d02842fSSascha Wildner ACPI_STATUS
5540d02842fSSascha Wildner DtCompileGeneric (
555*896f2e3aSSascha Wildner     void                    **PFieldList,
556*896f2e3aSSascha Wildner     char                    *TermFieldName,
557*896f2e3aSSascha Wildner     UINT32                  *PFieldLength);
5580d02842fSSascha Wildner 
5590d02842fSSascha Wildner ACPI_DMTABLE_INFO *
5600d02842fSSascha Wildner DtGetGenericTableInfo (
5610d02842fSSascha Wildner     char                    *Name);
5620d02842fSSascha Wildner 
5630d02842fSSascha Wildner /* ACPI Table templates */
5640d02842fSSascha Wildner 
5650d02842fSSascha Wildner extern const unsigned char  TemplateAsf[];
5660d02842fSSascha Wildner extern const unsigned char  TemplateBoot[];
5670d02842fSSascha Wildner extern const unsigned char  TemplateBert[];
5680d02842fSSascha Wildner extern const unsigned char  TemplateBgrt[];
5690d02842fSSascha Wildner extern const unsigned char  TemplateCpep[];
5700d02842fSSascha Wildner extern const unsigned char  TemplateCsrt[];
5710d02842fSSascha Wildner extern const unsigned char  TemplateDbg2[];
5720d02842fSSascha Wildner extern const unsigned char  TemplateDbgp[];
5730d02842fSSascha Wildner extern const unsigned char  TemplateDmar[];
574*896f2e3aSSascha Wildner extern const unsigned char  TemplateDrtm[];
5750d02842fSSascha Wildner extern const unsigned char  TemplateEcdt[];
5760d02842fSSascha Wildner extern const unsigned char  TemplateEinj[];
5770d02842fSSascha Wildner extern const unsigned char  TemplateErst[];
5780d02842fSSascha Wildner extern const unsigned char  TemplateFadt[];
5790d02842fSSascha Wildner extern const unsigned char  TemplateFpdt[];
5800d02842fSSascha Wildner extern const unsigned char  TemplateGtdt[];
5810d02842fSSascha Wildner extern const unsigned char  TemplateHest[];
5820d02842fSSascha Wildner extern const unsigned char  TemplateHpet[];
583*896f2e3aSSascha Wildner extern const unsigned char  TemplateIort[];
5840d02842fSSascha Wildner extern const unsigned char  TemplateIvrs[];
5859e1c0880SSascha Wildner extern const unsigned char  TemplateLpit[];
5860d02842fSSascha Wildner extern const unsigned char  TemplateMadt[];
5870d02842fSSascha Wildner extern const unsigned char  TemplateMcfg[];
5880d02842fSSascha Wildner extern const unsigned char  TemplateMchi[];
5890d02842fSSascha Wildner extern const unsigned char  TemplateMpst[];
5900d02842fSSascha Wildner extern const unsigned char  TemplateMsct[];
5915943f66cSSascha Wildner extern const unsigned char  TemplateMsdm[];
5920d02842fSSascha Wildner extern const unsigned char  TemplateMtmr[];
593*896f2e3aSSascha Wildner extern const unsigned char  TemplateNfit[];
5940d02842fSSascha Wildner extern const unsigned char  TemplatePcct[];
5950d02842fSSascha Wildner extern const unsigned char  TemplatePmtt[];
5960d02842fSSascha Wildner extern const unsigned char  TemplateRsdt[];
5970d02842fSSascha Wildner extern const unsigned char  TemplateS3pt[];
5980d02842fSSascha Wildner extern const unsigned char  TemplateSbst[];
5990d02842fSSascha Wildner extern const unsigned char  TemplateSlic[];
6000d02842fSSascha Wildner extern const unsigned char  TemplateSlit[];
6010d02842fSSascha Wildner extern const unsigned char  TemplateSpcr[];
6020d02842fSSascha Wildner extern const unsigned char  TemplateSpmi[];
6030d02842fSSascha Wildner extern const unsigned char  TemplateSrat[];
604*896f2e3aSSascha Wildner extern const unsigned char  TemplateStao[];
6050d02842fSSascha Wildner extern const unsigned char  TemplateTcpa[];
6060d02842fSSascha Wildner extern const unsigned char  TemplateTpm2[];
6070d02842fSSascha Wildner extern const unsigned char  TemplateUefi[];
6080d02842fSSascha Wildner extern const unsigned char  TemplateVrtc[];
6090d02842fSSascha Wildner extern const unsigned char  TemplateWaet[];
6100d02842fSSascha Wildner extern const unsigned char  TemplateWdat[];
6110d02842fSSascha Wildner extern const unsigned char  TemplateWddt[];
6120d02842fSSascha Wildner extern const unsigned char  TemplateWdrt[];
613*896f2e3aSSascha Wildner extern const unsigned char  TemplateWpbt[];
614*896f2e3aSSascha Wildner extern const unsigned char  TemplateXenv[];
6150d02842fSSascha Wildner extern const unsigned char  TemplateXsdt[];
6160d02842fSSascha Wildner 
6170d02842fSSascha Wildner #endif
618