1208625Sjkim/******************************************************************************
2208625Sjkim *
3208625Sjkim * Module Name: dtcompiler.h - header for data table compiler
4208625Sjkim *
5208625Sjkim *****************************************************************************/
6208625Sjkim
7217365Sjkim/*
8306536Sjkim * Copyright (C) 2000 - 2016, Intel Corp.
9208625Sjkim * All rights reserved.
10208625Sjkim *
11217365Sjkim * Redistribution and use in source and binary forms, with or without
12217365Sjkim * modification, are permitted provided that the following conditions
13217365Sjkim * are met:
14217365Sjkim * 1. Redistributions of source code must retain the above copyright
15217365Sjkim *    notice, this list of conditions, and the following disclaimer,
16217365Sjkim *    without modification.
17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20217365Sjkim *    including a substantially similar Disclaimer requirement for further
21217365Sjkim *    binary redistribution.
22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23217365Sjkim *    of any contributors may be used to endorse or promote products derived
24217365Sjkim *    from this software without specific prior written permission.
25208625Sjkim *
26217365Sjkim * Alternatively, this software may be distributed under the terms of the
27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28217365Sjkim * Software Foundation.
29208625Sjkim *
30217365Sjkim * NO WARRANTY
31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
42217365Sjkim */
43208625Sjkim
44208625Sjkim#define __DTCOMPILER_H__
45208625Sjkim
46208625Sjkim#ifndef _DTCOMPILER
47208625Sjkim#define _DTCOMPILER
48208625Sjkim
49208625Sjkim#include <stdio.h>
50209746Sjkim#include <contrib/dev/acpica/include/acdisasm.h>
51208625Sjkim
52208625Sjkim
53281075Sdim#define ASL_FIELD_CACHE_SIZE            512
54281075Sdim#define ASL_SUBTABLE_CACHE_SIZE         128
55281075Sdim
56281075Sdim
57208625Sjkim#undef DT_EXTERN
58208625Sjkim
59208625Sjkim#ifdef _DECLARE_DT_GLOBALS
60208625Sjkim#define DT_EXTERN
61208625Sjkim#define DT_INIT_GLOBAL(a,b)         (a)=(b)
62208625Sjkim#else
63208625Sjkim#define DT_EXTERN                   extern
64208625Sjkim#define DT_INIT_GLOBAL(a,b)         (a)
65208625Sjkim#endif
66208625Sjkim
67208625Sjkim
68208625Sjkim/* Types for individual fields (one per input line) */
69208625Sjkim
70208625Sjkim#define DT_FIELD_TYPE_STRING            0
71208625Sjkim#define DT_FIELD_TYPE_INTEGER           1
72208625Sjkim#define DT_FIELD_TYPE_BUFFER            2
73208625Sjkim#define DT_FIELD_TYPE_PCI_PATH          3
74208625Sjkim#define DT_FIELD_TYPE_FLAG              4
75208625Sjkim#define DT_FIELD_TYPE_FLAGS_INTEGER     5
76208625Sjkim#define DT_FIELD_TYPE_INLINE_SUBTABLE   6
77217365Sjkim#define DT_FIELD_TYPE_UUID              7
78217365Sjkim#define DT_FIELD_TYPE_UNICODE           8
79217365Sjkim#define DT_FIELD_TYPE_DEVICE_PATH       9
80218590Sjkim#define DT_FIELD_TYPE_LABEL             10
81208625Sjkim
82208625Sjkim
83208625Sjkim/*
84208625Sjkim * Structure used for each individual field within an ACPI table
85208625Sjkim */
86208625Sjkimtypedef struct dt_field
87208625Sjkim{
88281687Sjkim    char                    *Name;       /* Field name (from name : value) */
89281687Sjkim    char                    *Value;      /* Field value (from name : value) */
90281687Sjkim    UINT32                  StringLength;/* Length of Value */
91281687Sjkim    struct dt_field         *Next;       /* Next field */
92281687Sjkim    struct dt_field         *NextLabel;  /* If field is a label, next label */
93281687Sjkim    UINT32                  Line;        /* Line number for this field */
94281687Sjkim    UINT32                  ByteOffset;  /* Offset in source file for field */
95281687Sjkim    UINT32                  NameColumn;  /* Start column for field name */
96281687Sjkim    UINT32                  Column;      /* Start column for field value */
97281687Sjkim    UINT32                  TableOffset; /* Binary offset within ACPI table */
98208625Sjkim    UINT8                   Flags;
99208625Sjkim
100208625Sjkim} DT_FIELD;
101208625Sjkim
102208625Sjkim/* Flags for above */
103208625Sjkim
104208625Sjkim#define DT_FIELD_NOT_ALLOCATED      1
105208625Sjkim
106208625Sjkim
107208625Sjkim/*
108208625Sjkim * Structure used for individual subtables within an ACPI table
109208625Sjkim */
110208625Sjkimtypedef struct dt_subtable
111208625Sjkim{
112208625Sjkim    struct dt_subtable      *Parent;
113208625Sjkim    struct dt_subtable      *Child;
114208625Sjkim    struct dt_subtable      *Peer;
115208625Sjkim    struct dt_subtable      *StackTop;
116208625Sjkim    UINT8                   *Buffer;
117208625Sjkim    UINT8                   *LengthField;
118284460Sjkim    char                    *Name;
119208625Sjkim    UINT32                  Length;
120208625Sjkim    UINT32                  TotalLength;
121208625Sjkim    UINT32                  SizeOfLengthField;
122245582Sjkim    UINT16                  Depth;
123208625Sjkim    UINT8                   Flags;
124208625Sjkim
125208625Sjkim} DT_SUBTABLE;
126208625Sjkim
127208625Sjkim
128208625Sjkim/*
129208625Sjkim * Globals
130208625Sjkim */
131208625Sjkim
132208625Sjkim/* List of all field names and values from the input source */
133208625Sjkim
134208625SjkimDT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldList, NULL);
135208625Sjkim
136208625Sjkim/* List of all compiled tables and subtables */
137208625Sjkim
138208625SjkimDT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_RootTable, NULL);
139208625Sjkim
140208625Sjkim/* Stack for subtables */
141208625Sjkim
142208625SjkimDT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableStack, NULL);
143208625Sjkim
144218590Sjkim/* List for defined labels */
145208625Sjkim
146218590SjkimDT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_LabelList, NULL);
147218590Sjkim
148218590Sjkim/* Current offset within the binary output table */
149218590Sjkim
150218590SjkimDT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_CurrentTableOffset, 0);
151218590Sjkim
152281075Sdim/* Local caches */
153218590Sjkim
154281075SdimDT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_SubtableCount, 0);
155281075SdimDT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_SubtableCacheList, NULL);
156281075SdimDT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheNext, NULL);
157281075SdimDT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheLast, NULL);
158281075Sdim
159281075SdimDT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_FieldCount, 0);
160281075SdimDT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_FieldCacheList, NULL);
161281075SdimDT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheNext, NULL);
162281075SdimDT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheLast, NULL);
163281075Sdim
164281075Sdim
165208625Sjkim/* dtcompiler - main module */
166208625Sjkim
167208625SjkimACPI_STATUS
168208625SjkimDtCompileTable (
169208625Sjkim    DT_FIELD                **Field,
170208625Sjkim    ACPI_DMTABLE_INFO       *Info,
171208625Sjkim    DT_SUBTABLE             **RetSubtable,
172208625Sjkim    BOOLEAN                 Required);
173208625Sjkim
174284460SjkimACPI_STATUS
175306536SjkimDtCompileTwoSubtables (
176306536Sjkim    void                    **List,
177306536Sjkim    ACPI_DMTABLE_INFO       *TableInfo1,
178306536Sjkim    ACPI_DMTABLE_INFO       *TableInfo2);
179306536Sjkim
180306536SjkimACPI_STATUS
181284460SjkimDtCompilePadding (
182284460Sjkim    UINT32                  Length,
183284460Sjkim    DT_SUBTABLE             **RetSubtable);
184208625Sjkim
185284460Sjkim
186208625Sjkim/* dtio - binary and text input/output */
187208625Sjkim
188233250SjkimUINT32
189233250SjkimDtGetNextLine (
190306536Sjkim    FILE                    *Handle,
191306536Sjkim    UINT32                  Flags);
192233250Sjkim
193306536Sjkim/* Flags for DtGetNextLine */
194306536Sjkim
195306536Sjkim#define DT_ALLOW_MULTILINE_QUOTES   0x01
196306536Sjkim
197306536Sjkim
198208625SjkimDT_FIELD *
199208625SjkimDtScanFile (
200208625Sjkim    FILE                    *Handle);
201208625Sjkim
202208625Sjkimvoid
203208625SjkimDtOutputBinary (
204208625Sjkim    DT_SUBTABLE             *RootTable);
205208625Sjkim
206217365Sjkimvoid
207245582SjkimDtDumpSubtableList (
208245582Sjkim    void);
209245582Sjkim
210245582Sjkimvoid
211245582SjkimDtDumpFieldList (
212245582Sjkim    DT_FIELD                *Field);
213245582Sjkim
214245582Sjkimvoid
215217365SjkimDtWriteFieldToListing (
216217365Sjkim    UINT8                   *Buffer,
217217365Sjkim    DT_FIELD                *Field,
218217365Sjkim    UINT32                  Length);
219208625Sjkim
220217365Sjkimvoid
221217365SjkimDtWriteTableToListing (
222217365Sjkim    void);
223217365Sjkim
224217365Sjkim
225208625Sjkim/* dtsubtable - compile subtables */
226208625Sjkim
227208625Sjkimvoid
228208625SjkimDtCreateSubtable (
229208625Sjkim    UINT8                   *Buffer,
230208625Sjkim    UINT32                  Length,
231208625Sjkim    DT_SUBTABLE             **RetSubtable);
232208625Sjkim
233208625SjkimUINT32
234208625SjkimDtGetSubtableLength (
235208625Sjkim    DT_FIELD                *Field,
236208625Sjkim    ACPI_DMTABLE_INFO       *Info);
237208625Sjkim
238208625Sjkimvoid
239208625SjkimDtSetSubtableLength (
240208625Sjkim    DT_SUBTABLE             *Subtable);
241208625Sjkim
242208625Sjkimvoid
243208625SjkimDtPushSubtable (
244208625Sjkim    DT_SUBTABLE             *Subtable);
245208625Sjkim
246208625Sjkimvoid
247208625SjkimDtPopSubtable (
248208625Sjkim    void);
249208625Sjkim
250208625SjkimDT_SUBTABLE *
251208625SjkimDtPeekSubtable (
252208625Sjkim    void);
253208625Sjkim
254208625Sjkimvoid
255208625SjkimDtInsertSubtable (
256208625Sjkim    DT_SUBTABLE             *ParentTable,
257208625Sjkim    DT_SUBTABLE             *Subtable);
258208625Sjkim
259208625SjkimDT_SUBTABLE *
260208625SjkimDtGetNextSubtable (
261208625Sjkim    DT_SUBTABLE             *ParentTable,
262208625Sjkim    DT_SUBTABLE             *ChildTable);
263208625Sjkim
264208625SjkimDT_SUBTABLE *
265208625SjkimDtGetParentSubtable (
266208625Sjkim    DT_SUBTABLE             *Subtable);
267208625Sjkim
268208625Sjkim
269218590Sjkim/* dtexpress - Integer expressions and labels */
270218590Sjkim
271220663SjkimACPI_STATUS
272218590SjkimDtResolveIntegerExpression (
273220663Sjkim    DT_FIELD                *Field,
274220663Sjkim    UINT64                  *ReturnValue);
275218590Sjkim
276220663SjkimUINT64
277220663SjkimDtDoOperator (
278220663Sjkim    UINT64                  LeftValue,
279220663Sjkim    UINT32                  Operator,
280220663Sjkim    UINT64                  RightValue);
281220663Sjkim
282220663SjkimUINT64
283220663SjkimDtResolveLabel (
284220663Sjkim    char                    *LabelString);
285220663Sjkim
286218590Sjkimvoid
287218590SjkimDtDetectAllLabels (
288218590Sjkim    DT_FIELD                *FieldList);
289218590Sjkim
290218590Sjkim
291208625Sjkim/* dtfield - Compile individual fields within a table */
292208625Sjkim
293208625Sjkimvoid
294208625SjkimDtCompileOneField (
295208625Sjkim    UINT8                   *Buffer,
296208625Sjkim    DT_FIELD                *Field,
297208625Sjkim    UINT32                  ByteLength,
298208625Sjkim    UINT8                   Type,
299208625Sjkim    UINT8                   Flags);
300208625Sjkim
301208625Sjkimvoid
302208625SjkimDtCompileInteger (
303208625Sjkim    UINT8                   *Buffer,
304208625Sjkim    DT_FIELD                *Field,
305208625Sjkim    UINT32                  ByteLength,
306208625Sjkim    UINT8                   Flags);
307208625Sjkim
308208625SjkimUINT32
309208625SjkimDtCompileBuffer (
310208625Sjkim    UINT8                   *Buffer,
311208625Sjkim    char                    *Value,
312208625Sjkim    DT_FIELD                *Field,
313208625Sjkim    UINT32                  ByteLength);
314208625Sjkim
315209734Sjkimvoid
316208625SjkimDtCompileFlag (
317208625Sjkim    UINT8                   *Buffer,
318208625Sjkim    DT_FIELD                *Field,
319209734Sjkim    ACPI_DMTABLE_INFO       *Info);
320208625Sjkim
321208625Sjkim
322220663Sjkim/* dtparser - lex/yacc files */
323220663Sjkim
324220663SjkimUINT64
325220663SjkimDtEvaluateExpression (
326220663Sjkim    char                    *ExprString);
327220663Sjkim
328220663Sjkimint
329220663SjkimDtInitLexer (
330220663Sjkim    char                    *String);
331220663Sjkim
332220663Sjkimvoid
333220663SjkimDtTerminateLexer (
334220663Sjkim    void);
335220663Sjkim
336220663Sjkimchar *
337220663SjkimDtGetOpName (
338220663Sjkim    UINT32                  ParseOpcode);
339220663Sjkim
340220663Sjkim
341208625Sjkim/* dtutils - Miscellaneous utilities */
342208625Sjkim
343208625Sjkimtypedef
344208625Sjkimvoid (*DT_WALK_CALLBACK) (
345208625Sjkim    DT_SUBTABLE             *Subtable,
346208625Sjkim    void                    *Context,
347208625Sjkim    void                    *ReturnValue);
348208625Sjkim
349208625Sjkimvoid
350208625SjkimDtWalkTableTree (
351208625Sjkim    DT_SUBTABLE             *StartTable,
352208625Sjkim    DT_WALK_CALLBACK        UserFunction,
353208625Sjkim    void                    *Context,
354208625Sjkim    void                    *ReturnValue);
355208625Sjkim
356208625Sjkimvoid
357208625SjkimDtError (
358208625Sjkim    UINT8                   Level,
359281075Sdim    UINT16                  MessageId,
360208625Sjkim    DT_FIELD                *FieldObject,
361208625Sjkim    char                    *ExtraMessage);
362208625Sjkim
363208625Sjkimvoid
364208625SjkimDtNameError (
365208625Sjkim    UINT8                   Level,
366281075Sdim    UINT16                  MessageId,
367208625Sjkim    DT_FIELD                *FieldObject,
368208625Sjkim    char                    *ExtraMessage);
369208625Sjkim
370208625Sjkimvoid
371208625SjkimDtFatal (
372281075Sdim    UINT16                  MessageId,
373208625Sjkim    DT_FIELD                *FieldObject,
374208625Sjkim    char                    *ExtraMessage);
375208625Sjkim
376208625SjkimACPI_STATUS
377208625SjkimDtStrtoul64 (
378208625Sjkim    char                    *String,
379208625Sjkim    UINT64                  *ReturnInteger);
380208625Sjkim
381208625Sjkimchar*
382208625SjkimDtGetFieldValue (
383220663Sjkim    DT_FIELD                *Field);
384208625Sjkim
385208625SjkimUINT8
386208625SjkimDtGetFieldType (
387208625Sjkim    ACPI_DMTABLE_INFO       *Info);
388208625Sjkim
389208625SjkimUINT32
390208625SjkimDtGetBufferLength (
391208625Sjkim    char                    *Buffer);
392208625Sjkim
393208625SjkimUINT32
394208625SjkimDtGetFieldLength (
395208625Sjkim    DT_FIELD                *Field,
396208625Sjkim    ACPI_DMTABLE_INFO       *Info);
397208625Sjkim
398208625Sjkimvoid
399208625SjkimDtSetTableChecksum (
400208625Sjkim    UINT8                   *ChecksumPointer);
401208625Sjkim
402208625Sjkimvoid
403208625SjkimDtSetTableLength(
404208625Sjkim    void);
405208625Sjkim
406281075SdimDT_SUBTABLE *
407281075SdimUtSubtableCacheCalloc (
408281075Sdim    void);
409281075Sdim
410281075SdimDT_FIELD *
411281075SdimUtFieldCacheCalloc (
412281075Sdim    void);
413281075Sdim
414208625Sjkimvoid
415281075SdimDtDeleteCaches (
416208625Sjkim    void);
417208625Sjkim
418208625Sjkim
419208625Sjkim/* dttable - individual table compilation */
420208625Sjkim
421208625SjkimACPI_STATUS
422208625SjkimDtCompileFacs (
423208625Sjkim    DT_FIELD                **PFieldList);
424208625Sjkim
425208625SjkimACPI_STATUS
426208625SjkimDtCompileRsdp (
427208625Sjkim    DT_FIELD                **PFieldList);
428208625Sjkim
429208625SjkimACPI_STATUS
430208625SjkimDtCompileAsf (
431208625Sjkim    void                    **PFieldList);
432208625Sjkim
433208625SjkimACPI_STATUS
434208625SjkimDtCompileCpep (
435208625Sjkim    void                    **PFieldList);
436208625Sjkim
437208625SjkimACPI_STATUS
438245582SjkimDtCompileCsrt (
439245582Sjkim    void                    **PFieldList);
440245582Sjkim
441245582SjkimACPI_STATUS
442281075SdimDtCompileDbg2 (
443281075Sdim    void                    **PFieldList);
444281075Sdim
445281075SdimACPI_STATUS
446208625SjkimDtCompileDmar (
447208625Sjkim    void                    **PFieldList);
448208625Sjkim
449208625SjkimACPI_STATUS
450284460SjkimDtCompileDrtm (
451284460Sjkim    void                    **PFieldList);
452284460Sjkim
453284460SjkimACPI_STATUS
454208625SjkimDtCompileEinj (
455208625Sjkim    void                    **PFieldList);
456208625Sjkim
457208625SjkimACPI_STATUS
458208625SjkimDtCompileErst (
459208625Sjkim    void                    **PFieldList);
460208625Sjkim
461208625SjkimACPI_STATUS
462208625SjkimDtCompileFadt (
463208625Sjkim    void                    **PFieldList);
464208625Sjkim
465208625SjkimACPI_STATUS
466228110SjkimDtCompileFpdt (
467228110Sjkim    void                    **PFieldList);
468228110Sjkim
469228110SjkimACPI_STATUS
470281075SdimDtCompileGtdt (
471281075Sdim    void                    **PFieldList);
472281075Sdim
473281075SdimACPI_STATUS
474208625SjkimDtCompileHest (
475208625Sjkim    void                    **PFieldList);
476208625Sjkim
477208625SjkimACPI_STATUS
478284460SjkimDtCompileIort (
479284460Sjkim    void                    **PFieldList);
480284460Sjkim
481284460SjkimACPI_STATUS
482208625SjkimDtCompileIvrs (
483208625Sjkim    void                    **PFieldList);
484208625Sjkim
485208625SjkimACPI_STATUS
486281075SdimDtCompileLpit (
487281075Sdim    void                    **PFieldList);
488281075Sdim
489281075SdimACPI_STATUS
490208625SjkimDtCompileMadt (
491208625Sjkim    void                    **PFieldList);
492208625Sjkim
493208625SjkimACPI_STATUS
494208625SjkimDtCompileMcfg (
495208625Sjkim    void                    **PFieldList);
496208625Sjkim
497208625SjkimACPI_STATUS
498228110SjkimDtCompileMpst (
499228110Sjkim    void                    **PFieldList);
500228110Sjkim
501228110SjkimACPI_STATUS
502208625SjkimDtCompileMsct (
503208625Sjkim    void                    **PFieldList);
504208625Sjkim
505208625SjkimACPI_STATUS
506246849SjkimDtCompileMtmr (
507246849Sjkim    void                    **PFieldList);
508246849Sjkim
509246849SjkimACPI_STATUS
510284460SjkimDtCompileNfit (
511284460Sjkim    void                    **PFieldList);
512284460Sjkim
513284460SjkimACPI_STATUS
514228110SjkimDtCompilePmtt (
515228110Sjkim    void                    **PFieldList);
516228110Sjkim
517228110SjkimACPI_STATUS
518281075SdimDtCompilePcct (
519281075Sdim    void                    **PFieldList);
520281075Sdim
521281075SdimACPI_STATUS
522208625SjkimDtCompileRsdt (
523208625Sjkim    void                    **PFieldList);
524208625Sjkim
525208625SjkimACPI_STATUS
526228110SjkimDtCompileS3pt (
527228110Sjkim    DT_FIELD                **PFieldList);
528228110Sjkim
529228110SjkimACPI_STATUS
530219707SjkimDtCompileSlic (
531219707Sjkim    void                    **PFieldList);
532219707Sjkim
533219707SjkimACPI_STATUS
534208625SjkimDtCompileSlit (
535208625Sjkim    void                    **PFieldList);
536208625Sjkim
537208625SjkimACPI_STATUS
538208625SjkimDtCompileSrat (
539208625Sjkim    void                    **PFieldList);
540208625Sjkim
541208625SjkimACPI_STATUS
542284460SjkimDtCompileStao (
543284460Sjkim    void                    **PFieldList);
544284460Sjkim
545284460SjkimACPI_STATUS
546306536SjkimDtCompileTcpa (
547306536Sjkim    void                    **PFieldList);
548306536Sjkim
549306536SjkimACPI_STATUS
550217365SjkimDtCompileUefi (
551217365Sjkim    void                    **PFieldList);
552217365Sjkim
553217365SjkimACPI_STATUS
554246849SjkimDtCompileVrtc (
555246849Sjkim    void                    **PFieldList);
556246849Sjkim
557246849SjkimACPI_STATUS
558208625SjkimDtCompileWdat (
559208625Sjkim    void                    **PFieldList);
560208625Sjkim
561208625SjkimACPI_STATUS
562284460SjkimDtCompileWpbt (
563284460Sjkim    void                    **PFieldList);
564284460Sjkim
565284460SjkimACPI_STATUS
566208625SjkimDtCompileXsdt (
567208625Sjkim    void                    **PFieldList);
568208625Sjkim
569220663SjkimACPI_STATUS
570220663SjkimDtCompileGeneric (
571284460Sjkim    void                    **PFieldList,
572284460Sjkim    char                    *TermFieldName,
573284460Sjkim    UINT32                  *PFieldLength);
574220663Sjkim
575218590SjkimACPI_DMTABLE_INFO *
576218590SjkimDtGetGenericTableInfo (
577218590Sjkim    char                    *Name);
578218590Sjkim
579209734Sjkim/* ACPI Table templates */
580208625Sjkim
581209734Sjkimextern const unsigned char  TemplateAsf[];
582209734Sjkimextern const unsigned char  TemplateBoot[];
583209734Sjkimextern const unsigned char  TemplateBert[];
584228110Sjkimextern const unsigned char  TemplateBgrt[];
585209734Sjkimextern const unsigned char  TemplateCpep[];
586245582Sjkimextern const unsigned char  TemplateCsrt[];
587281075Sdimextern const unsigned char  TemplateDbg2[];
588209734Sjkimextern const unsigned char  TemplateDbgp[];
589209734Sjkimextern const unsigned char  TemplateDmar[];
590284460Sjkimextern const unsigned char  TemplateDrtm[];
591209734Sjkimextern const unsigned char  TemplateEcdt[];
592209734Sjkimextern const unsigned char  TemplateEinj[];
593209734Sjkimextern const unsigned char  TemplateErst[];
594209734Sjkimextern const unsigned char  TemplateFadt[];
595228110Sjkimextern const unsigned char  TemplateFpdt[];
596228110Sjkimextern const unsigned char  TemplateGtdt[];
597209734Sjkimextern const unsigned char  TemplateHest[];
598209734Sjkimextern const unsigned char  TemplateHpet[];
599284460Sjkimextern const unsigned char  TemplateIort[];
600209734Sjkimextern const unsigned char  TemplateIvrs[];
601281075Sdimextern const unsigned char  TemplateLpit[];
602209734Sjkimextern const unsigned char  TemplateMadt[];
603209734Sjkimextern const unsigned char  TemplateMcfg[];
604209734Sjkimextern const unsigned char  TemplateMchi[];
605228110Sjkimextern const unsigned char  TemplateMpst[];
606209734Sjkimextern const unsigned char  TemplateMsct[];
607281687Sjkimextern const unsigned char  TemplateMsdm[];
608246849Sjkimextern const unsigned char  TemplateMtmr[];
609284460Sjkimextern const unsigned char  TemplateNfit[];
610281075Sdimextern const unsigned char  TemplatePcct[];
611228110Sjkimextern const unsigned char  TemplatePmtt[];
612209734Sjkimextern const unsigned char  TemplateRsdt[];
613228110Sjkimextern const unsigned char  TemplateS3pt[];
614209734Sjkimextern const unsigned char  TemplateSbst[];
615209734Sjkimextern const unsigned char  TemplateSlic[];
616209734Sjkimextern const unsigned char  TemplateSlit[];
617209734Sjkimextern const unsigned char  TemplateSpcr[];
618209734Sjkimextern const unsigned char  TemplateSpmi[];
619209734Sjkimextern const unsigned char  TemplateSrat[];
620284460Sjkimextern const unsigned char  TemplateStao[];
621209734Sjkimextern const unsigned char  TemplateTcpa[];
622245582Sjkimextern const unsigned char  TemplateTpm2[];
623209734Sjkimextern const unsigned char  TemplateUefi[];
624246849Sjkimextern const unsigned char  TemplateVrtc[];
625209734Sjkimextern const unsigned char  TemplateWaet[];
626209734Sjkimextern const unsigned char  TemplateWdat[];
627209734Sjkimextern const unsigned char  TemplateWddt[];
628209734Sjkimextern const unsigned char  TemplateWdrt[];
629284460Sjkimextern const unsigned char  TemplateWpbt[];
630284460Sjkimextern const unsigned char  TemplateXenv[];
631209734Sjkimextern const unsigned char  TemplateXsdt[];
632209734Sjkim
633208625Sjkim#endif
634