1118611Snjl/******************************************************************************
2118611Snjl *
3151937Sjkim * Module Name: aslcompiler.h - common include file for iASL
4118611Snjl *
5118611Snjl *****************************************************************************/
6118611Snjl
7217365Sjkim/*
8245582Sjkim * Copyright (C) 2000 - 2013, Intel Corp.
9118611Snjl * All rights reserved.
10118611Snjl *
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.
25118611Snjl *
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.
29118611Snjl *
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 */
43118611Snjl
44118611Snjl
45118611Snjl#ifndef __ASLCOMPILER_H
46118611Snjl#define __ASLCOMPILER_H
47118611Snjl
48217365Sjkim#include <contrib/dev/acpica/include/acpi.h>
49217365Sjkim#include <contrib/dev/acpica/include/accommon.h>
50217365Sjkim#include <contrib/dev/acpica/include/amlresrc.h>
51217365Sjkim#include <contrib/dev/acpica/include/acdebug.h>
52118611Snjl
53118611Snjl/* Microsoft-specific */
54118611Snjl
55118611Snjl#if (defined WIN32 || defined WIN64)
56118611Snjl
57118611Snjl/* warn : used #pragma pack */
58118611Snjl#pragma warning(disable:4103)
59118611Snjl
60118611Snjl/* warn : named type definition in parentheses */
61118611Snjl#pragma warning(disable:4115)
62118611Snjl#endif
63118611Snjl
64118611Snjl#include <stdio.h>
65118611Snjl#include <stdlib.h>
66118611Snjl#include <stdarg.h>
67118611Snjl#include <string.h>
68118611Snjl#include <errno.h>
69118611Snjl#include <ctype.h>
70118611Snjl
71151937Sjkim/* Compiler headers */
72118611Snjl
73151937Sjkim#include <contrib/dev/acpica/compiler/asldefine.h>
74151937Sjkim#include <contrib/dev/acpica/compiler/asltypes.h>
75213806Sjkim#include <contrib/dev/acpica/compiler/aslmessages.h>
76151937Sjkim#include <contrib/dev/acpica/compiler/aslglobal.h>
77233250Sjkim#include <contrib/dev/acpica/compiler/preprocess.h>
78118611Snjl
79118611Snjl
80118611Snjl/*******************************************************************************
81118611Snjl *
82118611Snjl * Compiler prototypes
83118611Snjl *
84118611Snjl ******************************************************************************/
85118611Snjl
86151937Sjkim/*
87233250Sjkim * Main ASL parser - generated from flex/bison, lex/yacc, etc.
88151937Sjkim */
89118611SnjlACPI_PARSE_OBJECT *
90118611SnjlAslDoError (
91118611Snjl    void);
92118611Snjl
93118611Snjlint
94118611SnjlAslCompilerlex(
95118611Snjl    void);
96118611Snjl
97118611Snjlvoid
98234623SjkimAslResetCurrentLineBuffer (
99118611Snjl    void);
100118611Snjl
101118611Snjlvoid
102234623SjkimAslInsertLineBuffer (
103118611Snjl    int                     SourceChar);
104118611Snjl
105118611Snjlint
106118611SnjlAslPopInputFileStack (
107118611Snjl    void);
108118611Snjl
109118611Snjlvoid
110118611SnjlAslPushInputFileStack (
111118611Snjl    FILE                    *InputFile,
112118611Snjl    char                    *Filename);
113118611Snjl
114193529Sjkim/*
115209746Sjkim * aslstartup - entered from main()
116193529Sjkim */
117209746Sjkimvoid
118209746SjkimAslInitializeGlobals (
119209746Sjkim    void);
120209746Sjkim
121210976Sjkimtypedef
122210976SjkimACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
123210976Sjkim    char *);
124210976Sjkim
125193529SjkimACPI_STATUS
126193529SjkimAslDoOnePathname (
127210976Sjkim    char                    *Pathname,
128210976Sjkim    ASL_PATHNAME_CALLBACK   Callback);
129118611Snjl
130193529SjkimACPI_STATUS
131193529SjkimAslDoOneFile (
132193529Sjkim    char                    *Filename);
133193529Sjkim
134234623SjkimACPI_STATUS
135234623SjkimAslCheckForErrorExit (
136234623Sjkim    void);
137234623Sjkim
138234623Sjkim
139151937Sjkim/*
140151937Sjkim * aslcompile - compile mainline
141151937Sjkim */
142118611Snjlvoid
143118611SnjlAslCompilerSignon (
144118611Snjl    UINT32                  FileId);
145118611Snjl
146118611Snjlvoid
147118611SnjlAslCompilerFileHeader (
148118611Snjl    UINT32                  FileId);
149118611Snjl
150151937Sjkimint
151151937SjkimCmDoCompile (
152151937Sjkim    void);
153151937Sjkim
154118611Snjlvoid
155151937SjkimCmDoOutputFiles (
156151937Sjkim    void);
157118611Snjl
158151937Sjkimvoid
159151937SjkimCmCleanupAndExit (
160151937Sjkim    void);
161118611Snjl
162209746SjkimACPI_STATUS
163246849SjkimFlCheckForAcpiTable (
164246849Sjkim    FILE                    *Handle);
165246849Sjkim
166246849SjkimACPI_STATUS
167209746SjkimFlCheckForAscii (
168235945Sjkim    FILE                    *Handle,
169235945Sjkim    char                    *Filename,
170235945Sjkim    BOOLEAN                 DisplayErrors);
171118611Snjl
172209746Sjkim
173151937Sjkim/*
174218590Sjkim * aslwalks - semantic analysis and parse tree walks
175151937Sjkim */
176151937SjkimACPI_STATUS
177151937SjkimAnOtherSemanticAnalysisWalkBegin (
178151937Sjkim    ACPI_PARSE_OBJECT       *Op,
179151937Sjkim    UINT32                  Level,
180151937Sjkim    void                    *Context);
181118611Snjl
182151937SjkimACPI_STATUS
183151937SjkimAnOtherSemanticAnalysisWalkEnd (
184151937Sjkim    ACPI_PARSE_OBJECT       *Op,
185151937Sjkim    UINT32                  Level,
186151937Sjkim    void                    *Context);
187118611Snjl
188151937SjkimACPI_STATUS
189151937SjkimAnOperandTypecheckWalkEnd (
190151937Sjkim    ACPI_PARSE_OBJECT       *Op,
191151937Sjkim    UINT32                  Level,
192151937Sjkim    void                    *Context);
193118611Snjl
194151937SjkimACPI_STATUS
195245582SjkimAnMethodTypingWalkEnd (
196151937Sjkim    ACPI_PARSE_OBJECT       *Op,
197151937Sjkim    UINT32                  Level,
198151937Sjkim    void                    *Context);
199118611Snjl
200245582Sjkim
201245582Sjkim/*
202245582Sjkim * aslmethod - Control method analysis walk
203245582Sjkim */
204151937SjkimACPI_STATUS
205245582SjkimMtMethodAnalysisWalkBegin (
206151937Sjkim    ACPI_PARSE_OBJECT       *Op,
207151937Sjkim    UINT32                  Level,
208151937Sjkim    void                    *Context);
209118611Snjl
210151937SjkimACPI_STATUS
211245582SjkimMtMethodAnalysisWalkEnd (
212151937Sjkim    ACPI_PARSE_OBJECT       *Op,
213151937Sjkim    UINT32                  Level,
214151937Sjkim    void                    *Context);
215118611Snjl
216218590Sjkim
217218590Sjkim/*
218218590Sjkim * aslbtypes - bitfield data types
219218590Sjkim */
220218590SjkimUINT32
221218590SjkimAnMapObjTypeToBtype (
222218590Sjkim    ACPI_PARSE_OBJECT       *Op);
223218590Sjkim
224218590SjkimUINT32
225218590SjkimAnMapArgTypeToBtype (
226218590Sjkim    UINT32                  ArgType);
227218590Sjkim
228218590SjkimUINT32
229218590SjkimAnGetBtype (
230218590Sjkim    ACPI_PARSE_OBJECT       *Op);
231218590Sjkim
232218590Sjkimvoid
233218590SjkimAnFormatBtype (
234218590Sjkim    char                    *Buffer,
235218590Sjkim    UINT32                  Btype);
236218590Sjkim
237218590Sjkim
238218590Sjkim/*
239218590Sjkim * aslanalyze - Support functions for parse tree walks
240218590Sjkim */
241218590Sjkimvoid
242218590SjkimAnCheckId (
243151937Sjkim    ACPI_PARSE_OBJECT       *Op,
244218590Sjkim    ACPI_NAME               Type);
245118611Snjl
246218590Sjkim/* Values for Type argument above */
247151937Sjkim
248218590Sjkim#define ASL_TYPE_HID        0
249218590Sjkim#define ASL_TYPE_CID        1
250218590Sjkim
251218590SjkimBOOLEAN
252218590SjkimAnIsInternalMethod (
253218590Sjkim    ACPI_PARSE_OBJECT       *Op);
254218590Sjkim
255218590SjkimUINT32
256218590SjkimAnGetInternalMethodReturnType (
257218590Sjkim    ACPI_PARSE_OBJECT       *Op);
258218590Sjkim
259218590SjkimBOOLEAN
260218590SjkimAnLastStatementIsReturn (
261218590Sjkim    ACPI_PARSE_OBJECT       *Op);
262218590Sjkim
263218590Sjkimvoid
264218590SjkimAnCheckMethodReturnValue (
265218590Sjkim    ACPI_PARSE_OBJECT       *Op,
266218590Sjkim    const ACPI_OPCODE_INFO  *OpInfo,
267218590Sjkim    ACPI_PARSE_OBJECT       *ArgOp,
268218590Sjkim    UINT32                  RequiredBtypes,
269218590Sjkim    UINT32                  ThisNodeBtype);
270218590Sjkim
271218590SjkimBOOLEAN
272218590SjkimAnIsResultUsed (
273218590Sjkim    ACPI_PARSE_OBJECT       *Op);
274218590Sjkim
275218590Sjkimvoid
276218590SjkimApCheckForGpeNameConflict (
277218590Sjkim    ACPI_PARSE_OBJECT       *Op);
278218590Sjkim
279220663Sjkimvoid
280220663SjkimApCheckRegMethod (
281220663Sjkim    ACPI_PARSE_OBJECT       *Op);
282218590Sjkim
283220663Sjkim
284151937Sjkim/*
285151937Sjkim * aslerror - error handling/reporting
286151937Sjkim */
287118611Snjlvoid
288118611SnjlAslError (
289118611Snjl    UINT8                   Level,
290118611Snjl    UINT8                   MessageId,
291118611Snjl    ACPI_PARSE_OBJECT       *Op,
292118611Snjl    char                    *ExtraMessage);
293118611Snjl
294250838SjkimACPI_STATUS
295250838SjkimAslDisableException (
296250838Sjkim    char                    *MessageIdString);
297250838Sjkim
298250838SjkimBOOLEAN
299250838SjkimAslIsExceptionDisabled (
300250838Sjkim    UINT8                   Level,
301250838Sjkim    UINT8                   MessageId);
302250838Sjkim
303118611Snjlvoid
304118611SnjlAslCoreSubsystemError (
305118611Snjl    ACPI_PARSE_OBJECT       *Op,
306118611Snjl    ACPI_STATUS             Status,
307118611Snjl    char                    *ExtraMessage,
308118611Snjl    BOOLEAN                 Abort);
309118611Snjl
310151937Sjkimint
311151937SjkimAslCompilererror(
312228110Sjkim    const char              *s);
313151937Sjkim
314118611Snjlvoid
315118611SnjlAslCommonError (
316118611Snjl    UINT8                   Level,
317118611Snjl    UINT8                   MessageId,
318118611Snjl    UINT32                  CurrentLineNumber,
319118611Snjl    UINT32                  LogicalLineNumber,
320118611Snjl    UINT32                  LogicalByteOffset,
321118611Snjl    UINT32                  Column,
322118611Snjl    char                    *Filename,
323118611Snjl    char                    *ExtraMessage);
324118611Snjl
325118611Snjlvoid
326233250SjkimAslCommonError2 (
327233250Sjkim    UINT8                   Level,
328233250Sjkim    UINT8                   MessageId,
329233250Sjkim    UINT32                  LineNumber,
330233250Sjkim    UINT32                  Column,
331233250Sjkim    char                    *SourceLine,
332233250Sjkim    char                    *Filename,
333233250Sjkim    char                    *ExtraMessage);
334233250Sjkim
335233250Sjkimvoid
336118611SnjlAePrintException (
337118611Snjl    UINT32                  FileId,
338118611Snjl    ASL_ERROR_MSG           *Enode,
339118611Snjl    char                    *Header);
340118611Snjl
341118611Snjlvoid
342118611SnjlAePrintErrorLog (
343118611Snjl    UINT32                  FileId);
344118611Snjl
345193529Sjkimvoid
346193529SjkimAeClearErrorLog (
347193529Sjkim    void);
348193529Sjkim
349167802SjkimACPI_PHYSICAL_ADDRESS
350118611SnjlAeLocalGetRootPointer (
351167802Sjkim    void);
352118611Snjl
353118611Snjl
354151937Sjkim/*
355151937Sjkim * asllisting - generate all "listing" type files
356151937Sjkim */
357118611Snjlvoid
358151937SjkimLsDoListings (
359151937Sjkim    void);
360118611Snjl
361118611Snjlvoid
362249112SjkimLsWriteNodeToAsmListing (
363249112Sjkim    ACPI_PARSE_OBJECT       *Op);
364249112Sjkim
365249112Sjkimvoid
366249112SjkimLsWriteNode (
367249112Sjkim    ACPI_PARSE_OBJECT       *Op,
368249112Sjkim    UINT32                  FileId);
369249112Sjkim
370249112Sjkimvoid
371249112SjkimLsDumpParseTree (
372249112Sjkim    void);
373249112Sjkim
374249112Sjkim
375249112Sjkim/*
376249112Sjkim * asllistsup - Listing file support utilities
377249112Sjkim */
378249112Sjkimvoid
379249112SjkimLsDumpAscii (
380249112Sjkim    UINT32                  FileId,
381249112Sjkim    UINT32                  Count,
382249112Sjkim    UINT8                   *Buffer);
383249112Sjkim
384249112Sjkimvoid
385245582SjkimLsDumpAsciiInComment (
386245582Sjkim    UINT32                  FileId,
387245582Sjkim    UINT32                  Count,
388245582Sjkim    UINT8                   *Buffer);
389245582Sjkim
390245582Sjkimvoid
391249112SjkimLsCheckException (
392249112Sjkim    UINT32                  LineNumber,
393249112Sjkim    UINT32                  FileId);
394118611Snjl
395118611Snjlvoid
396249112SjkimLsFlushListingBuffer (
397118611Snjl    UINT32                  FileId);
398118611Snjl
399118611Snjlvoid
400249112SjkimLsWriteListingHexBytes (
401249112Sjkim    UINT8                   *Buffer,
402249112Sjkim    UINT32                  Length,
403249112Sjkim    UINT32                  FileId);
404249112Sjkim
405249112Sjkimvoid
406249112SjkimLsWriteSourceLines (
407249112Sjkim    UINT32                  ToLineNumber,
408249112Sjkim    UINT32                  ToLogicalLineNumber,
409249112Sjkim    UINT32                  FileId);
410249112Sjkim
411249112SjkimUINT32
412249112SjkimLsWriteOneSourceLine (
413249112Sjkim    UINT32                  FileId);
414249112Sjkim
415249112Sjkimvoid
416249112SjkimLsPushNode (
417249112Sjkim    char                    *Filename);
418249112Sjkim
419249112SjkimASL_LISTING_NODE *
420249112SjkimLsPopNode (
421118611Snjl    void);
422118611Snjl
423245582Sjkim
424245582Sjkim/*
425245582Sjkim * aslhex - generate all "hex" output files (C, ASM, ASL)
426245582Sjkim */
427167802Sjkimvoid
428245582SjkimHxDoHexOutput (
429167802Sjkim    void);
430118611Snjl
431245582Sjkim
432151937Sjkim/*
433151937Sjkim * aslfold - constant folding
434151937Sjkim */
435151937SjkimACPI_STATUS
436151937SjkimOpcAmlConstantWalk (
437151937Sjkim    ACPI_PARSE_OBJECT       *Op,
438151937Sjkim    UINT32                  Level,
439151937Sjkim    void                    *Context);
440118611Snjl
441118611Snjl
442118611Snjl/*
443249112Sjkim * asloffset - generate C offset file for BIOS support
444249112Sjkim */
445249112SjkimACPI_STATUS
446249112SjkimLsAmlOffsetWalk (
447249112Sjkim    ACPI_PARSE_OBJECT       *Op,
448249112Sjkim    UINT32                  Level,
449249112Sjkim    void                    *Context);
450249112Sjkim
451249112Sjkimvoid
452249112SjkimLsDoOffsetTableHeader (
453249112Sjkim    UINT32                  FileId);
454249112Sjkim
455249112Sjkimvoid
456249112SjkimLsDoOffsetTableFooter (
457249112Sjkim    UINT32                  FileId);
458249112Sjkim
459249112Sjkim
460249112Sjkim/*
461118611Snjl * aslopcodes - generate AML opcodes
462118611Snjl */
463118611SnjlACPI_STATUS
464118611SnjlOpcAmlOpcodeWalk (
465118611Snjl    ACPI_PARSE_OBJECT       *Op,
466118611Snjl    UINT32                  Level,
467118611Snjl    void                    *Context);
468118611Snjl
469118611SnjlACPI_STATUS
470151937SjkimOpcAmlOpcodeUpdateWalk (
471118611Snjl    ACPI_PARSE_OBJECT       *Op,
472118611Snjl    UINT32                  Level,
473118611Snjl    void                    *Context);
474118611Snjl
475118611Snjlvoid
476118611SnjlOpcGenerateAmlOpcode (
477118611Snjl    ACPI_PARSE_OBJECT       *Op);
478118611Snjl
479118611SnjlUINT32
480118611SnjlOpcSetOptimalIntegerSize (
481118611Snjl    ACPI_PARSE_OBJECT       *Op);
482118611Snjl
483118611Snjlvoid
484118611SnjlOpcGetIntegerWidth (
485118611Snjl    ACPI_PARSE_OBJECT       *Op);
486118611Snjl
487151937Sjkim
488118611Snjl/*
489118611Snjl * asloperands - generate AML operands for the AML opcodes
490118611Snjl */
491151937SjkimACPI_PARSE_OBJECT  *
492151937SjkimUtGetArg (
493151937Sjkim    ACPI_PARSE_OBJECT       *Op,
494151937Sjkim    UINT32                  Argn);
495118611Snjl
496118611Snjlvoid
497118611SnjlOpnGenerateAmlOperands (
498118611Snjl    ACPI_PARSE_OBJECT       *Op);
499118611Snjl
500118611Snjlvoid
501118611SnjlOpnDoPackage (
502118611Snjl    ACPI_PARSE_OBJECT       *Op);
503118611Snjl
504118611Snjl
505118611Snjl/*
506118611Snjl * aslopt - optmization
507118611Snjl */
508118611Snjlvoid
509118611SnjlOptOptimizeNamePath (
510118611Snjl    ACPI_PARSE_OBJECT       *Op,
511118611Snjl    UINT32                  Flags,
512118611Snjl    ACPI_WALK_STATE         *WalkState,
513118611Snjl    char                    *AmlNameString,
514118611Snjl    ACPI_NAMESPACE_NODE     *TargetNode);
515118611Snjl
516118611Snjl
517118611Snjl/*
518151937Sjkim * aslcodegen - code generation
519118611Snjl */
520118611Snjlvoid
521151937SjkimCgGenerateAmlOutput (
522151937Sjkim    void);
523118611Snjl
524118611Snjl
525151937Sjkim/*
526209746Sjkim * aslfile
527209746Sjkim */
528209746Sjkimvoid
529209746SjkimFlOpenFile (
530209746Sjkim    UINT32                  FileId,
531209746Sjkim    char                    *Filename,
532209746Sjkim    char                    *Mode);
533209746Sjkim
534209746Sjkim
535209746Sjkim/*
536151937Sjkim * asllength - calculate/adjust AML package lengths
537151937Sjkim */
538118611SnjlACPI_STATUS
539118611SnjlLnPackageLengthWalk (
540118611Snjl    ACPI_PARSE_OBJECT       *Op,
541118611Snjl    UINT32                  Level,
542118611Snjl    void                    *Context);
543118611Snjl
544118611SnjlACPI_STATUS
545118611SnjlLnInitLengthsWalk (
546118611Snjl    ACPI_PARSE_OBJECT       *Op,
547118611Snjl    UINT32                  Level,
548118611Snjl    void                    *Context);
549118611Snjl
550118611Snjlvoid
551151937SjkimCgGenerateAmlLengths (
552151937Sjkim    ACPI_PARSE_OBJECT       *Op);
553118611Snjl
554118611Snjl
555118611Snjl/*
556151937Sjkim * aslmap - opcode mappings and reserved method names
557118611Snjl */
558118611SnjlACPI_OBJECT_TYPE
559118611SnjlAslMapNamedOpcodeToDataType (
560118611Snjl    UINT16                  Opcode);
561118611Snjl
562204773Sjkim
563204773Sjkim/*
564204773Sjkim * aslpredef - ACPI predefined names support
565204773Sjkim */
566220663SjkimBOOLEAN
567204773SjkimApCheckForPredefinedMethod (
568204773Sjkim    ACPI_PARSE_OBJECT       *Op,
569204773Sjkim    ASL_METHOD_INFO         *MethodInfo);
570204773Sjkim
571206117Sjkimvoid
572206117SjkimApCheckPredefinedReturnValue (
573206117Sjkim    ACPI_PARSE_OBJECT       *Op,
574206117Sjkim    ASL_METHOD_INFO         *MethodInfo);
575206117Sjkim
576204773SjkimUINT32
577204773SjkimApCheckForPredefinedName (
578204773Sjkim    ACPI_PARSE_OBJECT       *Op,
579204773Sjkim    char                    *Name);
580204773Sjkim
581204773Sjkimvoid
582204773SjkimApCheckForPredefinedObject (
583204773Sjkim    ACPI_PARSE_OBJECT       *Op,
584204773Sjkim    char                    *Name);
585204773Sjkim
586246849SjkimACPI_STATUS
587246849SjkimApCheckObjectType (
588246849Sjkim    const char              *PredefinedName,
589246849Sjkim    ACPI_PARSE_OBJECT       *Op,
590246849Sjkim    UINT32                  ExpectedBtypes,
591246849Sjkim    UINT32                  PackageIndex);
592246849Sjkim
593204773Sjkimvoid
594204773SjkimApDisplayReservedNames (
595151937Sjkim    void);
596151937Sjkim
597151937Sjkim
598118611Snjl/*
599246849Sjkim * aslprepkg - ACPI predefined names support for packages
600246849Sjkim */
601246849Sjkimvoid
602246849SjkimApCheckPackage (
603246849Sjkim    ACPI_PARSE_OBJECT           *ParentOp,
604246849Sjkim    const ACPI_PREDEFINED_INFO  *Predefined);
605246849Sjkim
606246849Sjkim
607246849Sjkim/*
608118611Snjl * asltransform - parse tree transformations
609118611Snjl */
610118611SnjlACPI_STATUS
611118611SnjlTrAmlTransformWalk (
612118611Snjl    ACPI_PARSE_OBJECT       *Op,
613118611Snjl    UINT32                  Level,
614118611Snjl    void                    *Context);
615118611Snjl
616118611Snjl
617118611Snjl/*
618118611Snjl * asltree - parse tree support
619118611Snjl */
620118611SnjlACPI_STATUS
621118611SnjlTrWalkParseTree (
622118611Snjl    ACPI_PARSE_OBJECT       *Op,
623118611Snjl    UINT32                  Visitation,
624118611Snjl    ASL_WALK_CALLBACK       DescendingCallback,
625118611Snjl    ASL_WALK_CALLBACK       AscendingCallback,
626118611Snjl    void                    *Context);
627118611Snjl
628118611Snjl/* Values for "Visitation" parameter above */
629118611Snjl
630118611Snjl#define ASL_WALK_VISIT_DOWNWARD     0x01
631118611Snjl#define ASL_WALK_VISIT_UPWARD       0x02
632118611Snjl#define ASL_WALK_VISIT_TWICE        (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
633118611Snjl
634118611Snjl
635151937SjkimACPI_PARSE_OBJECT *
636151937SjkimTrAllocateNode (
637151937Sjkim    UINT32                  ParseOpcode);
638118611Snjl
639151937Sjkimvoid
640151937SjkimTrReleaseNode (
641151937Sjkim    ACPI_PARSE_OBJECT       *Op);
642151937Sjkim
643118611SnjlACPI_PARSE_OBJECT *
644118611SnjlTrUpdateNode (
645118611Snjl    UINT32                  ParseOpcode,
646118611Snjl    ACPI_PARSE_OBJECT       *Op);
647118611Snjl
648118611SnjlACPI_PARSE_OBJECT *
649118611SnjlTrCreateNode (
650118611Snjl    UINT32                  ParseOpcode,
651118611Snjl    UINT32                  NumChildren,
652118611Snjl    ...);
653118611Snjl
654118611SnjlACPI_PARSE_OBJECT *
655118611SnjlTrCreateLeafNode (
656118611Snjl    UINT32                  ParseOpcode);
657118611Snjl
658118611SnjlACPI_PARSE_OBJECT *
659118611SnjlTrCreateValuedLeafNode (
660118611Snjl    UINT32                  ParseOpcode,
661202771Sjkim    UINT64                  Value);
662118611Snjl
663118611SnjlACPI_PARSE_OBJECT *
664218590SjkimTrCreateConstantLeafNode (
665218590Sjkim    UINT32                  ParseOpcode);
666218590Sjkim
667218590SjkimACPI_PARSE_OBJECT *
668118611SnjlTrLinkChildren (
669118611Snjl    ACPI_PARSE_OBJECT       *Op,
670118611Snjl    UINT32                  NumChildren,
671118611Snjl    ...);
672118611Snjl
673118611Snjlvoid
674118611SnjlTrSetEndLineNumber (
675118611Snjl    ACPI_PARSE_OBJECT       *Op);
676118611Snjl
677118611Snjlvoid
678151937SjkimTrWalkTree (
679151937Sjkim    void);
680118611Snjl
681118611SnjlACPI_PARSE_OBJECT *
682118611SnjlTrLinkPeerNode (
683118611Snjl    ACPI_PARSE_OBJECT       *Op1,
684118611Snjl    ACPI_PARSE_OBJECT       *Op2);
685118611Snjl
686118611SnjlACPI_PARSE_OBJECT *
687118611SnjlTrLinkChildNode (
688118611Snjl    ACPI_PARSE_OBJECT       *Op1,
689118611Snjl    ACPI_PARSE_OBJECT       *Op2);
690118611Snjl
691118611SnjlACPI_PARSE_OBJECT *
692118611SnjlTrSetNodeFlags (
693118611Snjl    ACPI_PARSE_OBJECT       *Op,
694118611Snjl    UINT32                  Flags);
695118611Snjl
696118611SnjlACPI_PARSE_OBJECT *
697239340SjkimTrSetNodeAmlLength (
698239340Sjkim    ACPI_PARSE_OBJECT       *Op,
699239340Sjkim    UINT32                  Length);
700239340Sjkim
701239340SjkimACPI_PARSE_OBJECT *
702118611SnjlTrLinkPeerNodes (
703118611Snjl    UINT32                  NumPeers,
704118611Snjl    ...);
705118611Snjl
706118611Snjl
707118611Snjl/*
708118611Snjl * aslfiles - File I/O support
709118611Snjl */
710118611Snjlvoid
711151937SjkimAslAbort (
712151937Sjkim    void);
713118611Snjl
714118611Snjlvoid
715197104SjkimFlAddIncludeDirectory (
716197104Sjkim    char                    *Dir);
717197104Sjkim
718235945Sjkimchar *
719235945SjkimFlMergePathnames (
720235945Sjkim    char                    *PrefixDir,
721235945Sjkim    char                    *FilePathname);
722235945Sjkim
723197104Sjkimvoid
724118611SnjlFlOpenIncludeFile (
725118611Snjl    ACPI_PARSE_OBJECT       *Op);
726118611Snjl
727118611Snjlvoid
728118611SnjlFlFileError (
729118611Snjl    UINT32                  FileId,
730118611Snjl    UINT8                   ErrorId);
731118611Snjl
732207344SjkimUINT32
733207344SjkimFlGetFileSize (
734207344Sjkim    UINT32                  FileId);
735207344Sjkim
736118611SnjlACPI_STATUS
737118611SnjlFlReadFile (
738118611Snjl    UINT32                  FileId,
739118611Snjl    void                    *Buffer,
740118611Snjl    UINT32                  Length);
741118611Snjl
742118611Snjlvoid
743118611SnjlFlWriteFile (
744118611Snjl    UINT32                  FileId,
745118611Snjl    void                    *Buffer,
746118611Snjl    UINT32                  Length);
747118611Snjl
748118611Snjlvoid
749118611SnjlFlSeekFile (
750118611Snjl    UINT32                  FileId,
751118611Snjl    long                    Offset);
752118611Snjl
753118611Snjlvoid
754118611SnjlFlCloseFile (
755118611Snjl    UINT32                  FileId);
756118611Snjl
757118611Snjlvoid
758118611SnjlFlPrintFile (
759118611Snjl    UINT32                  FileId,
760118611Snjl    char                    *Format,
761118611Snjl    ...);
762118611Snjl
763118611Snjlvoid
764240716SjkimFlDeleteFile (
765240716Sjkim    UINT32                  FileId);
766240716Sjkim
767240716Sjkimvoid
768118611SnjlFlSetLineNumber (
769234623Sjkim    UINT32                  LineNumber);
770118611Snjl
771234623Sjkimvoid
772234623SjkimFlSetFilename (
773234623Sjkim    char                    *Filename);
774234623Sjkim
775118611SnjlACPI_STATUS
776118611SnjlFlOpenInputFile (
777118611Snjl    char                    *InputFilename);
778118611Snjl
779118611SnjlACPI_STATUS
780118611SnjlFlOpenAmlOutputFile (
781118611Snjl    char                    *InputFilename);
782118611Snjl
783118611SnjlACPI_STATUS
784118611SnjlFlOpenMiscOutputFiles (
785118611Snjl    char                    *InputFilename);
786118611Snjl
787118611Snjl
788151937Sjkim/*
789151937Sjkim * asload - load namespace in prep for cross reference
790151937Sjkim */
791118611SnjlACPI_STATUS
792118611SnjlLdLoadNamespace (
793118611Snjl    ACPI_PARSE_OBJECT       *RootOp);
794118611Snjl
795118611Snjl
796151937Sjkim/*
797245582Sjkim * asllookup - namespace lookup functions
798151937Sjkim */
799167802Sjkimvoid
800167802SjkimLkFindUnreferencedObjects (
801167802Sjkim    void);
802167802Sjkim
803250838Sjkim/*
804250838Sjkim * aslmain - startup
805250838Sjkim */
806250838Sjkimvoid
807250838SjkimUsage (
808250838Sjkim    void);
809245582Sjkim
810250838Sjkimvoid
811250838SjkimAslFilenameHelp (
812250838Sjkim    void);
813250838Sjkim
814250838Sjkim
815245582Sjkim/*
816245582Sjkim * aslnamesp - namespace output file generation
817245582Sjkim */
818118611SnjlACPI_STATUS
819245582SjkimNsDisplayNamespace (
820118611Snjl    void);
821118611Snjl
822212761Sjkimvoid
823245582SjkimNsSetupNamespaceListing (
824212761Sjkim    void                    *Handle);
825118611Snjl
826250838Sjkim/*
827250838Sjkim * asloptions - command line processing
828250838Sjkim */
829250838Sjkimint
830250838SjkimAslCommandLine (
831250838Sjkim    int                     argc,
832250838Sjkim    char                    **argv);
833212761Sjkim
834151937Sjkim/*
835245582Sjkim * aslxref - namespace cross reference
836245582Sjkim */
837245582SjkimACPI_STATUS
838245582SjkimXfCrossReferenceNamespace (
839245582Sjkim    void);
840245582Sjkim
841245582Sjkim
842245582Sjkim/*
843151937Sjkim * aslutils - common compiler utilites
844151937Sjkim */
845151937Sjkimvoid
846151937SjkimDbgPrint (
847151937Sjkim    UINT32                  Type,
848151937Sjkim    char                    *Format,
849151937Sjkim    ...);
850118611Snjl
851151937Sjkim/* Type values for above */
852118611Snjl
853151937Sjkim#define ASL_DEBUG_OUTPUT    0
854151937Sjkim#define ASL_PARSE_OUTPUT    1
855151937Sjkim#define ASL_TREE_OUTPUT     2
856151937Sjkim
857118611Snjlvoid
858209746SjkimUtDisplaySupportedTables (
859209746Sjkim    void);
860209746Sjkim
861209746Sjkimvoid
862118611SnjlUtDisplayConstantOpcodes (
863118611Snjl    void);
864118611Snjl
865151937SjkimUINT8
866118611SnjlUtBeginEvent (
867118611Snjl    char                    *Name);
868118611Snjl
869118611Snjlvoid
870118611SnjlUtEndEvent (
871151937Sjkim    UINT8                   Event);
872118611Snjl
873118611Snjlvoid *
874118611SnjlUtLocalCalloc (
875118611Snjl    UINT32                  Size);
876118611Snjl
877118611Snjlvoid
878118611SnjlUtPrintFormattedName (
879118611Snjl    UINT16                  ParseOpcode,
880118611Snjl    UINT32                  Level);
881118611Snjl
882118611Snjlvoid
883118611SnjlUtDisplaySummary (
884118611Snjl    UINT32                  FileId);
885118611Snjl
886118611SnjlUINT8
887118611SnjlUtHexCharToValue (
888151937Sjkim    int                     HexChar);
889118611Snjl
890118611Snjlvoid
891118611SnjlUtConvertByteToHex (
892118611Snjl    UINT8                   RawByte,
893118611Snjl    UINT8                   *Buffer);
894118611Snjl
895118611Snjlvoid
896118611SnjlUtConvertByteToAsmHex (
897118611Snjl    UINT8                   RawByte,
898118611Snjl    UINT8                   *Buffer);
899118611Snjl
900118611Snjlchar *
901118611SnjlUtGetOpName (
902118611Snjl    UINT32                  ParseOpcode);
903118611Snjl
904118611Snjlvoid
905118611SnjlUtSetParseOpName (
906118611Snjl    ACPI_PARSE_OBJECT       *Op);
907118611Snjl
908118611Snjlchar *
909118611SnjlUtGetStringBuffer (
910118611Snjl    UINT32                  Length);
911118611Snjl
912240716Sjkimvoid
913240716SjkimUtExpandLineBuffers (
914240716Sjkim    void);
915240716Sjkim
916118611SnjlACPI_STATUS
917118611SnjlUtInternalizeName (
918118611Snjl    char                    *ExternalName,
919118611Snjl    char                    **ConvertedName);
920118611Snjl
921118611Snjlvoid
922118611SnjlUtAttachNamepathToOwner (
923118611Snjl    ACPI_PARSE_OBJECT       *Op,
924118611Snjl    ACPI_PARSE_OBJECT       *NameNode);
925118611Snjl
926118611SnjlACPI_PARSE_OBJECT *
927118611SnjlUtCheckIntegerRange (
928118611Snjl    ACPI_PARSE_OBJECT       *Op,
929118611Snjl    UINT32                  LowValue,
930118611Snjl    UINT32                  HighValue);
931118611Snjl
932202771SjkimUINT64
933118611SnjlUtDoConstant (
934118611Snjl    char                    *String);
935118611Snjl
936220663SjkimACPI_STATUS
937220663SjkimUtStrtoul64 (
938220663Sjkim    char                    *String,
939220663Sjkim    UINT32                  Base,
940220663Sjkim    UINT64                  *RetInteger);
941220663Sjkim
942220663Sjkim
943217365Sjkim/*
944217365Sjkim * asluuid - UUID support
945217365Sjkim */
946217365SjkimACPI_STATUS
947217365SjkimAuValidateUuid (
948217365Sjkim    char                    *InString);
949118611Snjl
950217365SjkimACPI_STATUS
951217365SjkimAuConvertStringToUuid (
952217365Sjkim    char                    *InString,
953217365Sjkim    char                    *UuIdBuffer);
954217365Sjkim
955217365SjkimACPI_STATUS
956217365SjkimAuConvertUuidToString (
957217365Sjkim    char                    *UuIdBuffer,
958217365Sjkim    char                    *OutString);
959217365Sjkim
960118611Snjl/*
961151937Sjkim * aslresource - Resource template generation utilities
962118611Snjl */
963207344Sjkimvoid
964207344SjkimRsSmallAddressCheck (
965207344Sjkim    UINT8                   Type,
966207344Sjkim    UINT32                  Minimum,
967207344Sjkim    UINT32                  Maximum,
968207344Sjkim    UINT32                  Length,
969207344Sjkim    UINT32                  Alignment,
970207344Sjkim    ACPI_PARSE_OBJECT       *MinOp,
971207344Sjkim    ACPI_PARSE_OBJECT       *MaxOp,
972207344Sjkim    ACPI_PARSE_OBJECT       *LengthOp,
973213806Sjkim    ACPI_PARSE_OBJECT       *AlignOp,
974213806Sjkim    ACPI_PARSE_OBJECT       *Op);
975207344Sjkim
976207344Sjkimvoid
977207344SjkimRsLargeAddressCheck (
978207344Sjkim    UINT64                  Minimum,
979207344Sjkim    UINT64                  Maximum,
980207344Sjkim    UINT64                  Length,
981207344Sjkim    UINT64                  Granularity,
982207344Sjkim    UINT8                   Flags,
983207344Sjkim    ACPI_PARSE_OBJECT       *MinOp,
984207344Sjkim    ACPI_PARSE_OBJECT       *MaxOp,
985207344Sjkim    ACPI_PARSE_OBJECT       *LengthOp,
986213806Sjkim    ACPI_PARSE_OBJECT       *GranOp,
987213806Sjkim    ACPI_PARSE_OBJECT       *Op);
988207344Sjkim
989207344SjkimUINT16
990207344SjkimRsGetStringDataLength (
991207344Sjkim    ACPI_PARSE_OBJECT       *InitializerOp);
992207344Sjkim
993118611SnjlASL_RESOURCE_NODE *
994118611SnjlRsAllocateResourceNode (
995118611Snjl    UINT32                  Size);
996118611Snjl
997151937Sjkimvoid
998228110SjkimRsCreateResourceField (
999118611Snjl    ACPI_PARSE_OBJECT       *Op,
1000118611Snjl    char                    *Name,
1001118611Snjl    UINT32                  ByteOffset,
1002228110Sjkim    UINT32                  BitOffset,
1003228110Sjkim    UINT32                  BitLength);
1004118611Snjl
1005118611Snjlvoid
1006228110SjkimRsSetFlagBits (
1007228110Sjkim    UINT8                   *Flags,
1008118611Snjl    ACPI_PARSE_OBJECT       *Op,
1009228110Sjkim    UINT8                   Position,
1010228110Sjkim    UINT8                   DefaultBit);
1011118611Snjl
1012118611Snjlvoid
1013228110SjkimRsSetFlagBits16 (
1014228110Sjkim    UINT16                  *Flags,
1015118611Snjl    ACPI_PARSE_OBJECT       *Op,
1016118611Snjl    UINT8                   Position,
1017118611Snjl    UINT8                   DefaultBit);
1018118611Snjl
1019118611SnjlACPI_PARSE_OBJECT *
1020118611SnjlRsCompleteNodeAndGetNext (
1021118611Snjl    ACPI_PARSE_OBJECT       *Op);
1022118611Snjl
1023151937Sjkimvoid
1024151937SjkimRsCheckListForDuplicates (
1025151937Sjkim    ACPI_PARSE_OBJECT       *Op);
1026151937Sjkim
1027118611SnjlASL_RESOURCE_NODE *
1028118611SnjlRsDoOneResourceDescriptor (
1029118611Snjl    ACPI_PARSE_OBJECT       *DescriptorTypeOp,
1030118611Snjl    UINT32                  CurrentByteOffset,
1031118611Snjl    UINT8                   *State);
1032118611Snjl
1033151937Sjkim/* Values for State above */
1034151937Sjkim
1035118611Snjl#define ACPI_RSTATE_NORMAL              0
1036118611Snjl#define ACPI_RSTATE_START_DEPENDENT     1
1037118611Snjl#define ACPI_RSTATE_DEPENDENT_LIST      2
1038118611Snjl
1039118611SnjlUINT32
1040118611SnjlRsLinkDescriptorChain (
1041118611Snjl    ASL_RESOURCE_NODE       **PreviousRnode,
1042118611Snjl    ASL_RESOURCE_NODE       *Rnode);
1043118611Snjl
1044151937Sjkimvoid
1045151937SjkimRsDoResourceTemplate (
1046151937Sjkim    ACPI_PARSE_OBJECT       *Op);
1047118611Snjl
1048151937Sjkim
1049118611Snjl/*
1050207344Sjkim * aslrestype1 - Miscellaneous Small descriptors
1051118611Snjl */
1052118611SnjlASL_RESOURCE_NODE *
1053167802SjkimRsDoEndTagDescriptor (
1054167802Sjkim    ACPI_PARSE_OBJECT       *Op,
1055167802Sjkim    UINT32                  CurrentByteOffset);
1056167802Sjkim
1057167802SjkimASL_RESOURCE_NODE *
1058207344SjkimRsDoEndDependentDescriptor (
1059118611Snjl    ACPI_PARSE_OBJECT       *Op,
1060118611Snjl    UINT32                  CurrentByteOffset);
1061118611Snjl
1062118611SnjlASL_RESOURCE_NODE *
1063207344SjkimRsDoMemory24Descriptor (
1064118611Snjl    ACPI_PARSE_OBJECT       *Op,
1065118611Snjl    UINT32                  CurrentByteOffset);
1066118611Snjl
1067118611SnjlASL_RESOURCE_NODE *
1068207344SjkimRsDoMemory32Descriptor (
1069118611Snjl    ACPI_PARSE_OBJECT       *Op,
1070118611Snjl    UINT32                  CurrentByteOffset);
1071118611Snjl
1072118611SnjlASL_RESOURCE_NODE *
1073207344SjkimRsDoMemory32FixedDescriptor (
1074118611Snjl    ACPI_PARSE_OBJECT       *Op,
1075118611Snjl    UINT32                  CurrentByteOffset);
1076118611Snjl
1077118611SnjlASL_RESOURCE_NODE *
1078207344SjkimRsDoStartDependentDescriptor (
1079118611Snjl    ACPI_PARSE_OBJECT       *Op,
1080118611Snjl    UINT32                  CurrentByteOffset);
1081118611Snjl
1082118611SnjlASL_RESOURCE_NODE *
1083207344SjkimRsDoStartDependentNoPriDescriptor (
1084118611Snjl    ACPI_PARSE_OBJECT       *Op,
1085118611Snjl    UINT32                  CurrentByteOffset);
1086118611Snjl
1087118611SnjlASL_RESOURCE_NODE *
1088207344SjkimRsDoVendorSmallDescriptor (
1089118611Snjl    ACPI_PARSE_OBJECT       *Op,
1090118611Snjl    UINT32                  CurrentByteOffset);
1091118611Snjl
1092207344Sjkim
1093207344Sjkim/*
1094207344Sjkim * aslrestype1i - I/O-related Small descriptors
1095207344Sjkim */
1096118611SnjlASL_RESOURCE_NODE *
1097207344SjkimRsDoDmaDescriptor (
1098118611Snjl    ACPI_PARSE_OBJECT       *Op,
1099118611Snjl    UINT32                  CurrentByteOffset);
1100118611Snjl
1101118611SnjlASL_RESOURCE_NODE *
1102228110SjkimRsDoFixedDmaDescriptor (
1103228110Sjkim    ACPI_PARSE_OBJECT       *Op,
1104228110Sjkim    UINT32                  CurrentByteOffset);
1105228110Sjkim
1106228110SjkimASL_RESOURCE_NODE *
1107207344SjkimRsDoFixedIoDescriptor (
1108118611Snjl    ACPI_PARSE_OBJECT       *Op,
1109118611Snjl    UINT32                  CurrentByteOffset);
1110118611Snjl
1111118611SnjlASL_RESOURCE_NODE *
1112207344SjkimRsDoIoDescriptor (
1113118611Snjl    ACPI_PARSE_OBJECT       *Op,
1114118611Snjl    UINT32                  CurrentByteOffset);
1115118611Snjl
1116118611SnjlASL_RESOURCE_NODE *
1117207344SjkimRsDoIrqDescriptor (
1118118611Snjl    ACPI_PARSE_OBJECT       *Op,
1119118611Snjl    UINT32                  CurrentByteOffset);
1120118611Snjl
1121118611SnjlASL_RESOURCE_NODE *
1122207344SjkimRsDoIrqNoFlagsDescriptor (
1123118611Snjl    ACPI_PARSE_OBJECT       *Op,
1124118611Snjl    UINT32                  CurrentByteOffset);
1125118611Snjl
1126118611Snjl
1127118611Snjl/*
1128207344Sjkim * aslrestype2 - Large resource descriptors
1129118611Snjl */
1130151937SjkimASL_RESOURCE_NODE *
1131151937SjkimRsDoInterruptDescriptor (
1132151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1133151937Sjkim    UINT32                  CurrentByteOffset);
1134118611Snjl
1135118611SnjlASL_RESOURCE_NODE *
1136207344SjkimRsDoVendorLargeDescriptor (
1137207344Sjkim    ACPI_PARSE_OBJECT       *Op,
1138207344Sjkim    UINT32                  CurrentByteOffset);
1139207344Sjkim
1140207344SjkimASL_RESOURCE_NODE *
1141207344SjkimRsDoGeneralRegisterDescriptor (
1142207344Sjkim    ACPI_PARSE_OBJECT       *Op,
1143207344Sjkim    UINT32                  CurrentByteOffset);
1144207344Sjkim
1145228110SjkimASL_RESOURCE_NODE *
1146228110SjkimRsDoGpioIntDescriptor (
1147228110Sjkim    ACPI_PARSE_OBJECT       *Op,
1148228110Sjkim    UINT32                  CurrentByteOffset);
1149207344Sjkim
1150228110SjkimASL_RESOURCE_NODE *
1151228110SjkimRsDoGpioIoDescriptor (
1152228110Sjkim    ACPI_PARSE_OBJECT       *Op,
1153228110Sjkim    UINT32                  CurrentByteOffset);
1154228110Sjkim
1155228110SjkimASL_RESOURCE_NODE *
1156228110SjkimRsDoI2cSerialBusDescriptor (
1157228110Sjkim    ACPI_PARSE_OBJECT       *Op,
1158228110Sjkim    UINT32                  CurrentByteOffset);
1159228110Sjkim
1160228110SjkimASL_RESOURCE_NODE *
1161228110SjkimRsDoSpiSerialBusDescriptor (
1162228110Sjkim    ACPI_PARSE_OBJECT       *Op,
1163228110Sjkim    UINT32                  CurrentByteOffset);
1164228110Sjkim
1165228110SjkimASL_RESOURCE_NODE *
1166228110SjkimRsDoUartSerialBusDescriptor (
1167228110Sjkim    ACPI_PARSE_OBJECT       *Op,
1168228110Sjkim    UINT32                  CurrentByteOffset);
1169228110Sjkim
1170207344Sjkim/*
1171207344Sjkim * aslrestype2d - DWord address descriptors
1172207344Sjkim */
1173207344SjkimASL_RESOURCE_NODE *
1174118611SnjlRsDoDwordIoDescriptor (
1175118611Snjl    ACPI_PARSE_OBJECT       *Op,
1176118611Snjl    UINT32                  CurrentByteOffset);
1177118611Snjl
1178118611SnjlASL_RESOURCE_NODE *
1179118611SnjlRsDoDwordMemoryDescriptor (
1180118611Snjl    ACPI_PARSE_OBJECT       *Op,
1181118611Snjl    UINT32                  CurrentByteOffset);
1182118611Snjl
1183118611SnjlASL_RESOURCE_NODE *
1184151937SjkimRsDoDwordSpaceDescriptor (
1185151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1186151937Sjkim    UINT32                  CurrentByteOffset);
1187151937Sjkim
1188207344Sjkim
1189207344Sjkim/*
1190207344Sjkim * aslrestype2e - Extended address descriptors
1191207344Sjkim */
1192151937SjkimASL_RESOURCE_NODE *
1193151937SjkimRsDoExtendedIoDescriptor (
1194151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1195151937Sjkim    UINT32                  CurrentByteOffset);
1196151937Sjkim
1197151937SjkimASL_RESOURCE_NODE *
1198151937SjkimRsDoExtendedMemoryDescriptor (
1199151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1200151937Sjkim    UINT32                  CurrentByteOffset);
1201151937Sjkim
1202151937SjkimASL_RESOURCE_NODE *
1203151937SjkimRsDoExtendedSpaceDescriptor (
1204151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1205151937Sjkim    UINT32                  CurrentByteOffset);
1206151937Sjkim
1207207344Sjkim
1208207344Sjkim/*
1209207344Sjkim * aslrestype2q - QWord address descriptors
1210207344Sjkim */
1211151937SjkimASL_RESOURCE_NODE *
1212118611SnjlRsDoQwordIoDescriptor (
1213118611Snjl    ACPI_PARSE_OBJECT       *Op,
1214118611Snjl    UINT32                  CurrentByteOffset);
1215118611Snjl
1216118611SnjlASL_RESOURCE_NODE *
1217118611SnjlRsDoQwordMemoryDescriptor (
1218118611Snjl    ACPI_PARSE_OBJECT       *Op,
1219118611Snjl    UINT32                  CurrentByteOffset);
1220118611Snjl
1221118611SnjlASL_RESOURCE_NODE *
1222151937SjkimRsDoQwordSpaceDescriptor (
1223151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1224151937Sjkim    UINT32                  CurrentByteOffset);
1225151937Sjkim
1226207344Sjkim
1227207344Sjkim/*
1228207344Sjkim * aslrestype2w - Word address descriptors
1229207344Sjkim */
1230151937SjkimASL_RESOURCE_NODE *
1231118611SnjlRsDoWordIoDescriptor (
1232118611Snjl    ACPI_PARSE_OBJECT       *Op,
1233118611Snjl    UINT32                  CurrentByteOffset);
1234118611Snjl
1235118611SnjlASL_RESOURCE_NODE *
1236151937SjkimRsDoWordSpaceDescriptor (
1237151937Sjkim    ACPI_PARSE_OBJECT       *Op,
1238151937Sjkim    UINT32                  CurrentByteOffset);
1239151937Sjkim
1240151937SjkimASL_RESOURCE_NODE *
1241118611SnjlRsDoWordBusNumberDescriptor (
1242118611Snjl    ACPI_PARSE_OBJECT       *Op,
1243118611Snjl    UINT32                  CurrentByteOffset);
1244118611Snjl
1245209746Sjkim/*
1246209746Sjkim * Entry to data table compiler subsystem
1247209746Sjkim */
1248209746SjkimACPI_STATUS
1249209746SjkimDtDoCompile(
1250209746Sjkim    void);
1251209746Sjkim
1252209746SjkimACPI_STATUS
1253209746SjkimDtCreateTemplates (
1254209746Sjkim    char                    *Signature);
1255209746Sjkim
1256118611Snjl#endif /*  __ASLCOMPILER_H */
1257