dtcompiler.h revision 322877
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 - 2017, 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 <stdio.h>
158#include <contrib/dev/acpica/include/acdisasm.h>
159
160
161#define ASL_FIELD_CACHE_SIZE            512
162#define ASL_SUBTABLE_CACHE_SIZE         128
163
164
165#undef DT_EXTERN
166
167#ifdef _DECLARE_DT_GLOBALS
168#define DT_EXTERN
169#define DT_INIT_GLOBAL(a,b)         (a)=(b)
170#else
171#define DT_EXTERN                   extern
172#define DT_INIT_GLOBAL(a,b)         (a)
173#endif
174
175
176/* Types for individual fields (one per input line) */
177
178#define DT_FIELD_TYPE_STRING            0
179#define DT_FIELD_TYPE_INTEGER           1
180#define DT_FIELD_TYPE_BUFFER            2
181#define DT_FIELD_TYPE_PCI_PATH          3
182#define DT_FIELD_TYPE_FLAG              4
183#define DT_FIELD_TYPE_FLAGS_INTEGER     5
184#define DT_FIELD_TYPE_INLINE_SUBTABLE   6
185#define DT_FIELD_TYPE_UUID              7
186#define DT_FIELD_TYPE_UNICODE           8
187#define DT_FIELD_TYPE_DEVICE_PATH       9
188#define DT_FIELD_TYPE_LABEL             10
189
190
191/*
192 * Structure used for each individual field within an ACPI table
193 */
194typedef struct dt_field
195{
196    char                    *Name;       /* Field name (from name : value) */
197    char                    *Value;      /* Field value (from name : value) */
198    UINT32                  StringLength;/* Length of Value */
199    struct dt_field         *Next;       /* Next field */
200    struct dt_field         *NextLabel;  /* If field is a label, next label */
201    UINT32                  Line;        /* Line number for this field */
202    UINT32                  ByteOffset;  /* Offset in source file for field */
203    UINT32                  NameColumn;  /* Start column for field name */
204    UINT32                  Column;      /* Start column for field value */
205    UINT32                  TableOffset; /* Binary offset within ACPI table */
206    UINT8                   Flags;
207
208} DT_FIELD;
209
210/* Flags for above */
211
212#define DT_FIELD_NOT_ALLOCATED      1
213
214
215/*
216 * Structure used for individual subtables within an ACPI table
217 */
218typedef struct dt_subtable
219{
220    struct dt_subtable      *Parent;
221    struct dt_subtable      *Child;
222    struct dt_subtable      *Peer;
223    struct dt_subtable      *StackTop;
224    UINT8                   *Buffer;
225    UINT8                   *LengthField;
226    char                    *Name;
227    UINT32                  Length;
228    UINT32                  TotalLength;
229    UINT32                  SizeOfLengthField;
230    UINT16                  Depth;
231    UINT8                   Flags;
232
233} DT_SUBTABLE;
234
235
236/*
237 * Globals
238 */
239
240/* List of all field names and values from the input source */
241
242DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldList, NULL);
243
244/* List of all compiled tables and subtables */
245
246DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_RootTable, NULL);
247
248/* Stack for subtables */
249
250DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableStack, NULL);
251
252/* List for defined labels */
253
254DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_LabelList, NULL);
255
256/* Current offset within the binary output table */
257
258DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_CurrentTableOffset, 0);
259
260/* Local caches */
261
262DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_SubtableCount, 0);
263DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_SubtableCacheList, NULL);
264DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheNext, NULL);
265DT_EXTERN DT_SUBTABLE       DT_INIT_GLOBAL (*Gbl_SubtableCacheLast, NULL);
266
267DT_EXTERN UINT32            DT_INIT_GLOBAL (Gbl_FieldCount, 0);
268DT_EXTERN ASL_CACHE_INFO    DT_INIT_GLOBAL (*Gbl_FieldCacheList, NULL);
269DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheNext, NULL);
270DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*Gbl_FieldCacheLast, NULL);
271
272
273/* dtcompiler - main module */
274
275ACPI_STATUS
276DtCompileTable (
277    DT_FIELD                **Field,
278    ACPI_DMTABLE_INFO       *Info,
279    DT_SUBTABLE             **RetSubtable,
280    BOOLEAN                 Required);
281
282ACPI_STATUS
283DtCompileTwoSubtables (
284    void                    **List,
285    ACPI_DMTABLE_INFO       *TableInfo1,
286    ACPI_DMTABLE_INFO       *TableInfo2);
287
288ACPI_STATUS
289DtCompilePadding (
290    UINT32                  Length,
291    DT_SUBTABLE             **RetSubtable);
292
293
294/* dtio - binary and text input/output */
295
296UINT32
297DtGetNextLine (
298    FILE                    *Handle,
299    UINT32                  Flags);
300
301/* Flags for DtGetNextLine */
302
303#define DT_ALLOW_MULTILINE_QUOTES   0x01
304
305
306DT_FIELD *
307DtScanFile (
308    FILE                    *Handle);
309
310void
311DtOutputBinary (
312    DT_SUBTABLE             *RootTable);
313
314void
315DtDumpSubtableList (
316    void);
317
318void
319DtDumpFieldList (
320    DT_FIELD                *Field);
321
322void
323DtWriteFieldToListing (
324    UINT8                   *Buffer,
325    DT_FIELD                *Field,
326    UINT32                  Length);
327
328void
329DtWriteTableToListing (
330    void);
331
332
333/* dtsubtable - compile subtables */
334
335void
336DtCreateSubtable (
337    UINT8                   *Buffer,
338    UINT32                  Length,
339    DT_SUBTABLE             **RetSubtable);
340
341UINT32
342DtGetSubtableLength (
343    DT_FIELD                *Field,
344    ACPI_DMTABLE_INFO       *Info);
345
346void
347DtSetSubtableLength (
348    DT_SUBTABLE             *Subtable);
349
350void
351DtPushSubtable (
352    DT_SUBTABLE             *Subtable);
353
354void
355DtPopSubtable (
356    void);
357
358DT_SUBTABLE *
359DtPeekSubtable (
360    void);
361
362void
363DtInsertSubtable (
364    DT_SUBTABLE             *ParentTable,
365    DT_SUBTABLE             *Subtable);
366
367DT_SUBTABLE *
368DtGetNextSubtable (
369    DT_SUBTABLE             *ParentTable,
370    DT_SUBTABLE             *ChildTable);
371
372DT_SUBTABLE *
373DtGetParentSubtable (
374    DT_SUBTABLE             *Subtable);
375
376
377/* dtexpress - Integer expressions and labels */
378
379ACPI_STATUS
380DtResolveIntegerExpression (
381    DT_FIELD                *Field,
382    UINT64                  *ReturnValue);
383
384UINT64
385DtDoOperator (
386    UINT64                  LeftValue,
387    UINT32                  Operator,
388    UINT64                  RightValue);
389
390UINT64
391DtResolveLabel (
392    char                    *LabelString);
393
394void
395DtDetectAllLabels (
396    DT_FIELD                *FieldList);
397
398
399/* dtfield - Compile individual fields within a table */
400
401void
402DtCompileOneField (
403    UINT8                   *Buffer,
404    DT_FIELD                *Field,
405    UINT32                  ByteLength,
406    UINT8                   Type,
407    UINT8                   Flags);
408
409void
410DtCompileInteger (
411    UINT8                   *Buffer,
412    DT_FIELD                *Field,
413    UINT32                  ByteLength,
414    UINT8                   Flags);
415
416UINT32
417DtCompileBuffer (
418    UINT8                   *Buffer,
419    char                    *Value,
420    DT_FIELD                *Field,
421    UINT32                  ByteLength);
422
423void
424DtCompileFlag (
425    UINT8                   *Buffer,
426    DT_FIELD                *Field,
427    ACPI_DMTABLE_INFO       *Info);
428
429
430/* dtparser - lex/yacc files */
431
432UINT64
433DtEvaluateExpression (
434    char                    *ExprString);
435
436int
437DtInitLexer (
438    char                    *String);
439
440void
441DtTerminateLexer (
442    void);
443
444char *
445DtGetOpName (
446    UINT32                  ParseOpcode);
447
448
449/* dtutils - Miscellaneous utilities */
450
451typedef
452void (*DT_WALK_CALLBACK) (
453    DT_SUBTABLE             *Subtable,
454    void                    *Context,
455    void                    *ReturnValue);
456
457void
458DtWalkTableTree (
459    DT_SUBTABLE             *StartTable,
460    DT_WALK_CALLBACK        UserFunction,
461    void                    *Context,
462    void                    *ReturnValue);
463
464void
465DtError (
466    UINT8                   Level,
467    UINT16                  MessageId,
468    DT_FIELD                *FieldObject,
469    char                    *ExtraMessage);
470
471void
472DtNameError (
473    UINT8                   Level,
474    UINT16                  MessageId,
475    DT_FIELD                *FieldObject,
476    char                    *ExtraMessage);
477
478void
479DtFatal (
480    UINT16                  MessageId,
481    DT_FIELD                *FieldObject,
482    char                    *ExtraMessage);
483
484char*
485DtGetFieldValue (
486    DT_FIELD                *Field);
487
488UINT8
489DtGetFieldType (
490    ACPI_DMTABLE_INFO       *Info);
491
492UINT32
493DtGetBufferLength (
494    char                    *Buffer);
495
496UINT32
497DtGetFieldLength (
498    DT_FIELD                *Field,
499    ACPI_DMTABLE_INFO       *Info);
500
501void
502DtSetTableChecksum (
503    UINT8                   *ChecksumPointer);
504
505void
506DtSetTableLength(
507    void);
508
509DT_SUBTABLE *
510UtSubtableCacheCalloc (
511    void);
512
513DT_FIELD *
514UtFieldCacheCalloc (
515    void);
516
517void
518DtDeleteCaches (
519    void);
520
521
522/* dttable - individual table compilation */
523
524ACPI_STATUS
525DtCompileFacs (
526    DT_FIELD                **PFieldList);
527
528ACPI_STATUS
529DtCompileRsdp (
530    DT_FIELD                **PFieldList);
531
532ACPI_STATUS
533DtCompileAsf (
534    void                    **PFieldList);
535
536ACPI_STATUS
537DtCompileCpep (
538    void                    **PFieldList);
539
540ACPI_STATUS
541DtCompileCsrt (
542    void                    **PFieldList);
543
544ACPI_STATUS
545DtCompileDbg2 (
546    void                    **PFieldList);
547
548ACPI_STATUS
549DtCompileDmar (
550    void                    **PFieldList);
551
552ACPI_STATUS
553DtCompileDrtm (
554    void                    **PFieldList);
555
556ACPI_STATUS
557DtCompileEinj (
558    void                    **PFieldList);
559
560ACPI_STATUS
561DtCompileErst (
562    void                    **PFieldList);
563
564ACPI_STATUS
565DtCompileFadt (
566    void                    **PFieldList);
567
568ACPI_STATUS
569DtCompileFpdt (
570    void                    **PFieldList);
571
572ACPI_STATUS
573DtCompileGtdt (
574    void                    **PFieldList);
575
576ACPI_STATUS
577DtCompileHest (
578    void                    **PFieldList);
579
580ACPI_STATUS
581DtCompileHmat (
582    void                    **PFieldList);
583
584ACPI_STATUS
585DtCompileIort (
586    void                    **PFieldList);
587
588ACPI_STATUS
589DtCompileIvrs (
590    void                    **PFieldList);
591
592ACPI_STATUS
593DtCompileLpit (
594    void                    **PFieldList);
595
596ACPI_STATUS
597DtCompileMadt (
598    void                    **PFieldList);
599
600ACPI_STATUS
601DtCompileMcfg (
602    void                    **PFieldList);
603
604ACPI_STATUS
605DtCompileMpst (
606    void                    **PFieldList);
607
608ACPI_STATUS
609DtCompileMsct (
610    void                    **PFieldList);
611
612ACPI_STATUS
613DtCompileMtmr (
614    void                    **PFieldList);
615
616ACPI_STATUS
617DtCompileNfit (
618    void                    **PFieldList);
619
620ACPI_STATUS
621DtCompilePmtt (
622    void                    **PFieldList);
623
624ACPI_STATUS
625DtCompilePptt (
626    void                    **PFieldList);
627
628ACPI_STATUS
629DtCompilePcct (
630    void                    **PFieldList);
631
632ACPI_STATUS
633DtCompileRsdt (
634    void                    **PFieldList);
635
636ACPI_STATUS
637DtCompileS3pt (
638    DT_FIELD                **PFieldList);
639
640ACPI_STATUS
641DtCompileSlic (
642    void                    **PFieldList);
643
644ACPI_STATUS
645DtCompileSlit (
646    void                    **PFieldList);
647
648ACPI_STATUS
649DtCompileSrat (
650    void                    **PFieldList);
651
652ACPI_STATUS
653DtCompileStao (
654    void                    **PFieldList);
655
656ACPI_STATUS
657DtCompileTcpa (
658    void                    **PFieldList);
659
660ACPI_STATUS
661DtCompileUefi (
662    void                    **PFieldList);
663
664ACPI_STATUS
665DtCompileVrtc (
666    void                    **PFieldList);
667
668ACPI_STATUS
669DtCompileWdat (
670    void                    **PFieldList);
671
672ACPI_STATUS
673DtCompileWpbt (
674    void                    **PFieldList);
675
676ACPI_STATUS
677DtCompileXsdt (
678    void                    **PFieldList);
679
680ACPI_STATUS
681DtCompileGeneric (
682    void                    **PFieldList,
683    char                    *TermFieldName,
684    UINT32                  *PFieldLength);
685
686ACPI_DMTABLE_INFO *
687DtGetGenericTableInfo (
688    char                    *Name);
689
690/* ACPI Table templates */
691
692extern const unsigned char  TemplateAsf[];
693extern const unsigned char  TemplateBoot[];
694extern const unsigned char  TemplateBert[];
695extern const unsigned char  TemplateBgrt[];
696extern const unsigned char  TemplateCpep[];
697extern const unsigned char  TemplateCsrt[];
698extern const unsigned char  TemplateDbg2[];
699extern const unsigned char  TemplateDbgp[];
700extern const unsigned char  TemplateDmar[];
701extern const unsigned char  TemplateDrtm[];
702extern const unsigned char  TemplateEcdt[];
703extern const unsigned char  TemplateEinj[];
704extern const unsigned char  TemplateErst[];
705extern const unsigned char  TemplateFadt[];
706extern const unsigned char  TemplateFpdt[];
707extern const unsigned char  TemplateGtdt[];
708extern const unsigned char  TemplateHest[];
709extern const unsigned char  TemplateHmat[];
710extern const unsigned char  TemplateHpet[];
711extern const unsigned char  TemplateIort[];
712extern const unsigned char  TemplateIvrs[];
713extern const unsigned char  TemplateLpit[];
714extern const unsigned char  TemplateMadt[];
715extern const unsigned char  TemplateMcfg[];
716extern const unsigned char  TemplateMchi[];
717extern const unsigned char  TemplateMpst[];
718extern const unsigned char  TemplateMsct[];
719extern const unsigned char  TemplateMsdm[];
720extern const unsigned char  TemplateMtmr[];
721extern const unsigned char  TemplateNfit[];
722extern const unsigned char  TemplatePcct[];
723extern const unsigned char  TemplatePmtt[];
724extern const unsigned char  TemplatePptt[];
725extern const unsigned char  TemplateRasf[];
726extern const unsigned char  TemplateRsdt[];
727extern const unsigned char  TemplateS3pt[];
728extern const unsigned char  TemplateSbst[];
729extern const unsigned char  TemplateSdei[];
730extern const unsigned char  TemplateSlic[];
731extern const unsigned char  TemplateSlit[];
732extern const unsigned char  TemplateSpcr[];
733extern const unsigned char  TemplateSpmi[];
734extern const unsigned char  TemplateSrat[];
735extern const unsigned char  TemplateStao[];
736extern const unsigned char  TemplateTcpa[];
737extern const unsigned char  TemplateTpm2[];
738extern const unsigned char  TemplateUefi[];
739extern const unsigned char  TemplateVrtc[];
740extern const unsigned char  TemplateWaet[];
741extern const unsigned char  TemplateWdat[];
742extern const unsigned char  TemplateWddt[];
743extern const unsigned char  TemplateWdrt[];
744extern const unsigned char  TemplateWpbt[];
745extern const unsigned char  TemplateWsmt[];
746extern const unsigned char  TemplateXenv[];
747extern const unsigned char  TemplateXsdt[];
748
749#endif
750