Deleted Added
full compact
aslcompiler.h (241973) aslcompiler.h (243347)
1/******************************************************************************
2 *
3 * Module Name: aslcompiler.h - common include file for iASL
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44
45#ifndef __ASLCOMPILER_H
46#define __ASLCOMPILER_H
47
48#include <contrib/dev/acpica/include/acpi.h>
49#include <contrib/dev/acpica/include/accommon.h>
50#include <contrib/dev/acpica/include/amlresrc.h>
51#include <contrib/dev/acpica/include/acdebug.h>
52
53/* Microsoft-specific */
54
55#if (defined WIN32 || defined WIN64)
56
57/* warn : used #pragma pack */
58#pragma warning(disable:4103)
59
60/* warn : named type definition in parentheses */
61#pragma warning(disable:4115)
62#endif
63
64#include <stdio.h>
65#include <stdlib.h>
66#include <stdarg.h>
67#include <string.h>
68#include <errno.h>
69#include <ctype.h>
70
71/* Compiler headers */
72
73#include <contrib/dev/acpica/compiler/asldefine.h>
74#include <contrib/dev/acpica/compiler/asltypes.h>
75#include <contrib/dev/acpica/compiler/aslmessages.h>
76#include <contrib/dev/acpica/compiler/aslglobal.h>
77#include <contrib/dev/acpica/compiler/preprocess.h>
78
79
80/*******************************************************************************
81 *
82 * Compiler prototypes
83 *
84 ******************************************************************************/
85
86/*
87 * Main ASL parser - generated from flex/bison, lex/yacc, etc.
88 */
1/******************************************************************************
2 *
3 * Module Name: aslcompiler.h - common include file for iASL
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44
45#ifndef __ASLCOMPILER_H
46#define __ASLCOMPILER_H
47
48#include <contrib/dev/acpica/include/acpi.h>
49#include <contrib/dev/acpica/include/accommon.h>
50#include <contrib/dev/acpica/include/amlresrc.h>
51#include <contrib/dev/acpica/include/acdebug.h>
52
53/* Microsoft-specific */
54
55#if (defined WIN32 || defined WIN64)
56
57/* warn : used #pragma pack */
58#pragma warning(disable:4103)
59
60/* warn : named type definition in parentheses */
61#pragma warning(disable:4115)
62#endif
63
64#include <stdio.h>
65#include <stdlib.h>
66#include <stdarg.h>
67#include <string.h>
68#include <errno.h>
69#include <ctype.h>
70
71/* Compiler headers */
72
73#include <contrib/dev/acpica/compiler/asldefine.h>
74#include <contrib/dev/acpica/compiler/asltypes.h>
75#include <contrib/dev/acpica/compiler/aslmessages.h>
76#include <contrib/dev/acpica/compiler/aslglobal.h>
77#include <contrib/dev/acpica/compiler/preprocess.h>
78
79
80/*******************************************************************************
81 *
82 * Compiler prototypes
83 *
84 ******************************************************************************/
85
86/*
87 * Main ASL parser - generated from flex/bison, lex/yacc, etc.
88 */
89int
90AslCompilerparse(
91 void);
92
93ACPI_PARSE_OBJECT *
94AslDoError (
95 void);
96
97int
98AslCompilerlex(
99 void);
100
101void
102AslResetCurrentLineBuffer (
103 void);
104
105void
106AslInsertLineBuffer (
107 int SourceChar);
108
109int
110AslPopInputFileStack (
111 void);
112
113void
114AslPushInputFileStack (
115 FILE *InputFile,
116 char *Filename);
117
118/*
119 * aslstartup - entered from main()
120 */
121void
122AslInitializeGlobals (
123 void);
124
125typedef
126ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
127 char *);
128
129ACPI_STATUS
130AslDoOnePathname (
131 char *Pathname,
132 ASL_PATHNAME_CALLBACK Callback);
133
134ACPI_STATUS
135AslDoOneFile (
136 char *Filename);
137
138ACPI_STATUS
139AslCheckForErrorExit (
140 void);
141
142
143/*
144 * aslcompile - compile mainline
145 */
146void
147AslCompilerSignon (
148 UINT32 FileId);
149
150void
151AslCompilerFileHeader (
152 UINT32 FileId);
153
154int
155CmDoCompile (
156 void);
157
158void
159CmDoOutputFiles (
160 void);
161
162void
163CmCleanupAndExit (
164 void);
165
166ACPI_STATUS
167FlCheckForAscii (
168 FILE *Handle,
169 char *Filename,
170 BOOLEAN DisplayErrors);
171
172
173/*
174 * aslwalks - semantic analysis and parse tree walks
175 */
176ACPI_STATUS
177AnOtherSemanticAnalysisWalkBegin (
178 ACPI_PARSE_OBJECT *Op,
179 UINT32 Level,
180 void *Context);
181
182ACPI_STATUS
183AnOtherSemanticAnalysisWalkEnd (
184 ACPI_PARSE_OBJECT *Op,
185 UINT32 Level,
186 void *Context);
187
188ACPI_STATUS
189AnOperandTypecheckWalkEnd (
190 ACPI_PARSE_OBJECT *Op,
191 UINT32 Level,
192 void *Context);
193
194ACPI_STATUS
195AnMethodAnalysisWalkBegin (
196 ACPI_PARSE_OBJECT *Op,
197 UINT32 Level,
198 void *Context);
199
200ACPI_STATUS
201AnMethodAnalysisWalkEnd (
202 ACPI_PARSE_OBJECT *Op,
203 UINT32 Level,
204 void *Context);
205
206ACPI_STATUS
207AnMethodTypingWalkEnd (
208 ACPI_PARSE_OBJECT *Op,
209 UINT32 Level,
210 void *Context);
211
212
213/*
214 * aslbtypes - bitfield data types
215 */
216UINT32
217AnMapObjTypeToBtype (
218 ACPI_PARSE_OBJECT *Op);
219
220UINT32
221AnMapArgTypeToBtype (
222 UINT32 ArgType);
223
224UINT32
225AnGetBtype (
226 ACPI_PARSE_OBJECT *Op);
227
228void
229AnFormatBtype (
230 char *Buffer,
231 UINT32 Btype);
232
233
234/*
235 * aslanalyze - Support functions for parse tree walks
236 */
237void
238AnCheckId (
239 ACPI_PARSE_OBJECT *Op,
240 ACPI_NAME Type);
241
242/* Values for Type argument above */
243
244#define ASL_TYPE_HID 0
245#define ASL_TYPE_CID 1
246
247BOOLEAN
248AnIsInternalMethod (
249 ACPI_PARSE_OBJECT *Op);
250
251UINT32
252AnGetInternalMethodReturnType (
253 ACPI_PARSE_OBJECT *Op);
254
255BOOLEAN
256AnLastStatementIsReturn (
257 ACPI_PARSE_OBJECT *Op);
258
259void
260AnCheckMethodReturnValue (
261 ACPI_PARSE_OBJECT *Op,
262 const ACPI_OPCODE_INFO *OpInfo,
263 ACPI_PARSE_OBJECT *ArgOp,
264 UINT32 RequiredBtypes,
265 UINT32 ThisNodeBtype);
266
267BOOLEAN
268AnIsResultUsed (
269 ACPI_PARSE_OBJECT *Op);
270
271void
272ApCheckForGpeNameConflict (
273 ACPI_PARSE_OBJECT *Op);
274
275void
276ApCheckRegMethod (
277 ACPI_PARSE_OBJECT *Op);
278
279
280/*
281 * aslerror - error handling/reporting
282 */
283void
284AslError (
285 UINT8 Level,
286 UINT8 MessageId,
287 ACPI_PARSE_OBJECT *Op,
288 char *ExtraMessage);
289
290void
291AslCoreSubsystemError (
292 ACPI_PARSE_OBJECT *Op,
293 ACPI_STATUS Status,
294 char *ExtraMessage,
295 BOOLEAN Abort);
296
297int
298AslCompilererror(
299 const char *s);
300
301void
302AslCommonError (
303 UINT8 Level,
304 UINT8 MessageId,
305 UINT32 CurrentLineNumber,
306 UINT32 LogicalLineNumber,
307 UINT32 LogicalByteOffset,
308 UINT32 Column,
309 char *Filename,
310 char *ExtraMessage);
311
312void
313AslCommonError2 (
314 UINT8 Level,
315 UINT8 MessageId,
316 UINT32 LineNumber,
317 UINT32 Column,
318 char *SourceLine,
319 char *Filename,
320 char *ExtraMessage);
321
322void
323AePrintException (
324 UINT32 FileId,
325 ASL_ERROR_MSG *Enode,
326 char *Header);
327
328void
329AePrintErrorLog (
330 UINT32 FileId);
331
332void
333AeClearErrorLog (
334 void);
335
336ACPI_PHYSICAL_ADDRESS
337AeLocalGetRootPointer (
338 void);
339
340
341/*
342 * asllisting - generate all "listing" type files
343 */
344void
345LsDoListings (
346 void);
347
348void
349LsWriteNodeToAsmListing (
350 ACPI_PARSE_OBJECT *Op);
351
352void
353LsWriteNode (
354 ACPI_PARSE_OBJECT *Op,
355 UINT32 FileId);
356
357void
358LsDoHexOutput (
359 void);
360
361void
362LsDumpParseTree (
363 void);
364
365/*
366 * aslfold - constant folding
367 */
368ACPI_STATUS
369OpcAmlConstantWalk (
370 ACPI_PARSE_OBJECT *Op,
371 UINT32 Level,
372 void *Context);
373
374
375/*
376 * aslopcodes - generate AML opcodes
377 */
378ACPI_STATUS
379OpcAmlOpcodeWalk (
380 ACPI_PARSE_OBJECT *Op,
381 UINT32 Level,
382 void *Context);
383
384ACPI_STATUS
385OpcAmlOpcodeUpdateWalk (
386 ACPI_PARSE_OBJECT *Op,
387 UINT32 Level,
388 void *Context);
389
390void
391OpcGenerateAmlOpcode (
392 ACPI_PARSE_OBJECT *Op);
393
394UINT32
395OpcSetOptimalIntegerSize (
396 ACPI_PARSE_OBJECT *Op);
397
398void
399OpcGetIntegerWidth (
400 ACPI_PARSE_OBJECT *Op);
401
402
403/*
404 * asloperands - generate AML operands for the AML opcodes
405 */
406ACPI_PARSE_OBJECT *
407UtGetArg (
408 ACPI_PARSE_OBJECT *Op,
409 UINT32 Argn);
410
411void
412OpnGenerateAmlOperands (
413 ACPI_PARSE_OBJECT *Op);
414
415void
416OpnDoPackage (
417 ACPI_PARSE_OBJECT *Op);
418
419
420/*
421 * aslopt - optmization
422 */
423void
424OptOptimizeNamePath (
425 ACPI_PARSE_OBJECT *Op,
426 UINT32 Flags,
427 ACPI_WALK_STATE *WalkState,
428 char *AmlNameString,
429 ACPI_NAMESPACE_NODE *TargetNode);
430
431
432/*
433 * aslcodegen - code generation
434 */
435void
436CgGenerateAmlOutput (
437 void);
438
439
440/*
441 * aslfile
442 */
443void
444FlOpenFile (
445 UINT32 FileId,
446 char *Filename,
447 char *Mode);
448
449
450/*
451 * asllength - calculate/adjust AML package lengths
452 */
453ACPI_STATUS
454LnPackageLengthWalk (
455 ACPI_PARSE_OBJECT *Op,
456 UINT32 Level,
457 void *Context);
458
459ACPI_STATUS
460LnInitLengthsWalk (
461 ACPI_PARSE_OBJECT *Op,
462 UINT32 Level,
463 void *Context);
464
465void
466CgGenerateAmlLengths (
467 ACPI_PARSE_OBJECT *Op);
468
469
470/*
471 * aslmap - opcode mappings and reserved method names
472 */
473ACPI_OBJECT_TYPE
474AslMapNamedOpcodeToDataType (
475 UINT16 Opcode);
476
477
478/*
479 * aslpredef - ACPI predefined names support
480 */
481BOOLEAN
482ApCheckForPredefinedMethod (
483 ACPI_PARSE_OBJECT *Op,
484 ASL_METHOD_INFO *MethodInfo);
485
486void
487ApCheckPredefinedReturnValue (
488 ACPI_PARSE_OBJECT *Op,
489 ASL_METHOD_INFO *MethodInfo);
490
491UINT32
492ApCheckForPredefinedName (
493 ACPI_PARSE_OBJECT *Op,
494 char *Name);
495
496void
497ApCheckForPredefinedObject (
498 ACPI_PARSE_OBJECT *Op,
499 char *Name);
500
501void
502ApDisplayReservedNames (
503 void);
504
505
506/*
507 * asltransform - parse tree transformations
508 */
509ACPI_STATUS
510TrAmlTransformWalk (
511 ACPI_PARSE_OBJECT *Op,
512 UINT32 Level,
513 void *Context);
514
515
516/*
517 * asltree - parse tree support
518 */
519ACPI_STATUS
520TrWalkParseTree (
521 ACPI_PARSE_OBJECT *Op,
522 UINT32 Visitation,
523 ASL_WALK_CALLBACK DescendingCallback,
524 ASL_WALK_CALLBACK AscendingCallback,
525 void *Context);
526
527/* Values for "Visitation" parameter above */
528
529#define ASL_WALK_VISIT_DOWNWARD 0x01
530#define ASL_WALK_VISIT_UPWARD 0x02
531#define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
532
533
534ACPI_PARSE_OBJECT *
535TrAllocateNode (
536 UINT32 ParseOpcode);
537
538void
539TrReleaseNode (
540 ACPI_PARSE_OBJECT *Op);
541
542ACPI_PARSE_OBJECT *
543TrUpdateNode (
544 UINT32 ParseOpcode,
545 ACPI_PARSE_OBJECT *Op);
546
547ACPI_PARSE_OBJECT *
548TrCreateNode (
549 UINT32 ParseOpcode,
550 UINT32 NumChildren,
551 ...);
552
553ACPI_PARSE_OBJECT *
554TrCreateLeafNode (
555 UINT32 ParseOpcode);
556
557ACPI_PARSE_OBJECT *
558TrCreateValuedLeafNode (
559 UINT32 ParseOpcode,
560 UINT64 Value);
561
562ACPI_PARSE_OBJECT *
563TrCreateConstantLeafNode (
564 UINT32 ParseOpcode);
565
566ACPI_PARSE_OBJECT *
567TrLinkChildren (
568 ACPI_PARSE_OBJECT *Op,
569 UINT32 NumChildren,
570 ...);
571
572void
573TrSetEndLineNumber (
574 ACPI_PARSE_OBJECT *Op);
575
576void
577TrWalkTree (
578 void);
579
580ACPI_PARSE_OBJECT *
581TrLinkPeerNode (
582 ACPI_PARSE_OBJECT *Op1,
583 ACPI_PARSE_OBJECT *Op2);
584
585ACPI_PARSE_OBJECT *
586TrLinkChildNode (
587 ACPI_PARSE_OBJECT *Op1,
588 ACPI_PARSE_OBJECT *Op2);
589
590ACPI_PARSE_OBJECT *
591TrSetNodeFlags (
592 ACPI_PARSE_OBJECT *Op,
593 UINT32 Flags);
594
595ACPI_PARSE_OBJECT *
596TrSetNodeAmlLength (
597 ACPI_PARSE_OBJECT *Op,
598 UINT32 Length);
599
600ACPI_PARSE_OBJECT *
601TrLinkPeerNodes (
602 UINT32 NumPeers,
603 ...);
604
605
606/*
607 * aslfiles - File I/O support
608 */
609void
610AslAbort (
611 void);
612
613void
614FlAddIncludeDirectory (
615 char *Dir);
616
617char *
618FlMergePathnames (
619 char *PrefixDir,
620 char *FilePathname);
621
622void
623FlOpenIncludeFile (
624 ACPI_PARSE_OBJECT *Op);
625
626void
627FlFileError (
628 UINT32 FileId,
629 UINT8 ErrorId);
630
631UINT32
632FlGetFileSize (
633 UINT32 FileId);
634
635ACPI_STATUS
636FlReadFile (
637 UINT32 FileId,
638 void *Buffer,
639 UINT32 Length);
640
641void
642FlWriteFile (
643 UINT32 FileId,
644 void *Buffer,
645 UINT32 Length);
646
647void
648FlSeekFile (
649 UINT32 FileId,
650 long Offset);
651
652void
653FlCloseFile (
654 UINT32 FileId);
655
656void
657FlPrintFile (
658 UINT32 FileId,
659 char *Format,
660 ...);
661
662void
663FlDeleteFile (
664 UINT32 FileId);
665
666void
667FlSetLineNumber (
668 UINT32 LineNumber);
669
670void
671FlSetFilename (
672 char *Filename);
673
674ACPI_STATUS
675FlOpenInputFile (
676 char *InputFilename);
677
678ACPI_STATUS
679FlOpenAmlOutputFile (
680 char *InputFilename);
681
682ACPI_STATUS
683FlOpenMiscOutputFiles (
684 char *InputFilename);
685
686
687/*
688 * asload - load namespace in prep for cross reference
689 */
690ACPI_STATUS
691LdLoadNamespace (
692 ACPI_PARSE_OBJECT *RootOp);
693
694
695/*
696 * asllookup - namespace cross reference
697 */
698ACPI_STATUS
699LkCrossReferenceNamespace (
700 void);
701
702void
703LkFindUnreferencedObjects (
704 void);
705
706ACPI_STATUS
707LsDisplayNamespace (
708 void);
709
710void
711LsSetupNsList (
712 void *Handle);
713
714
715/*
716 * aslutils - common compiler utilites
717 */
718void
719DbgPrint (
720 UINT32 Type,
721 char *Format,
722 ...);
723
724/* Type values for above */
725
726#define ASL_DEBUG_OUTPUT 0
727#define ASL_PARSE_OUTPUT 1
728#define ASL_TREE_OUTPUT 2
729
730void
731UtDisplaySupportedTables (
732 void);
733
734void
735UtDisplayConstantOpcodes (
736 void);
737
738UINT8
739UtBeginEvent (
740 char *Name);
741
742void
743UtEndEvent (
744 UINT8 Event);
745
746void *
747UtLocalCalloc (
748 UINT32 Size);
749
750void
751UtPrintFormattedName (
752 UINT16 ParseOpcode,
753 UINT32 Level);
754
755void
756UtDisplaySummary (
757 UINT32 FileId);
758
759UINT8
760UtHexCharToValue (
761 int HexChar);
762
763void
764UtConvertByteToHex (
765 UINT8 RawByte,
766 UINT8 *Buffer);
767
768void
769UtConvertByteToAsmHex (
770 UINT8 RawByte,
771 UINT8 *Buffer);
772
773char *
774UtGetOpName (
775 UINT32 ParseOpcode);
776
777void
778UtSetParseOpName (
779 ACPI_PARSE_OBJECT *Op);
780
781char *
782UtGetStringBuffer (
783 UINT32 Length);
784
785void
786UtExpandLineBuffers (
787 void);
788
789ACPI_STATUS
790UtInternalizeName (
791 char *ExternalName,
792 char **ConvertedName);
793
794void
795UtAttachNamepathToOwner (
796 ACPI_PARSE_OBJECT *Op,
797 ACPI_PARSE_OBJECT *NameNode);
798
799ACPI_PARSE_OBJECT *
800UtCheckIntegerRange (
801 ACPI_PARSE_OBJECT *Op,
802 UINT32 LowValue,
803 UINT32 HighValue);
804
805UINT64
806UtDoConstant (
807 char *String);
808
809ACPI_STATUS
810UtStrtoul64 (
811 char *String,
812 UINT32 Base,
813 UINT64 *RetInteger);
814
815
816/*
817 * asluuid - UUID support
818 */
819ACPI_STATUS
820AuValidateUuid (
821 char *InString);
822
823ACPI_STATUS
824AuConvertStringToUuid (
825 char *InString,
826 char *UuIdBuffer);
827
828ACPI_STATUS
829AuConvertUuidToString (
830 char *UuIdBuffer,
831 char *OutString);
832
833/*
834 * aslresource - Resource template generation utilities
835 */
836void
837RsSmallAddressCheck (
838 UINT8 Type,
839 UINT32 Minimum,
840 UINT32 Maximum,
841 UINT32 Length,
842 UINT32 Alignment,
843 ACPI_PARSE_OBJECT *MinOp,
844 ACPI_PARSE_OBJECT *MaxOp,
845 ACPI_PARSE_OBJECT *LengthOp,
846 ACPI_PARSE_OBJECT *AlignOp,
847 ACPI_PARSE_OBJECT *Op);
848
849void
850RsLargeAddressCheck (
851 UINT64 Minimum,
852 UINT64 Maximum,
853 UINT64 Length,
854 UINT64 Granularity,
855 UINT8 Flags,
856 ACPI_PARSE_OBJECT *MinOp,
857 ACPI_PARSE_OBJECT *MaxOp,
858 ACPI_PARSE_OBJECT *LengthOp,
859 ACPI_PARSE_OBJECT *GranOp,
860 ACPI_PARSE_OBJECT *Op);
861
862UINT16
863RsGetStringDataLength (
864 ACPI_PARSE_OBJECT *InitializerOp);
865
866ASL_RESOURCE_NODE *
867RsAllocateResourceNode (
868 UINT32 Size);
869
870void
871RsCreateResourceField (
872 ACPI_PARSE_OBJECT *Op,
873 char *Name,
874 UINT32 ByteOffset,
875 UINT32 BitOffset,
876 UINT32 BitLength);
877
878void
879RsSetFlagBits (
880 UINT8 *Flags,
881 ACPI_PARSE_OBJECT *Op,
882 UINT8 Position,
883 UINT8 DefaultBit);
884
885void
886RsSetFlagBits16 (
887 UINT16 *Flags,
888 ACPI_PARSE_OBJECT *Op,
889 UINT8 Position,
890 UINT8 DefaultBit);
891
892ACPI_PARSE_OBJECT *
893RsCompleteNodeAndGetNext (
894 ACPI_PARSE_OBJECT *Op);
895
896void
897RsCheckListForDuplicates (
898 ACPI_PARSE_OBJECT *Op);
899
900ASL_RESOURCE_NODE *
901RsDoOneResourceDescriptor (
902 ACPI_PARSE_OBJECT *DescriptorTypeOp,
903 UINT32 CurrentByteOffset,
904 UINT8 *State);
905
906/* Values for State above */
907
908#define ACPI_RSTATE_NORMAL 0
909#define ACPI_RSTATE_START_DEPENDENT 1
910#define ACPI_RSTATE_DEPENDENT_LIST 2
911
912UINT32
913RsLinkDescriptorChain (
914 ASL_RESOURCE_NODE **PreviousRnode,
915 ASL_RESOURCE_NODE *Rnode);
916
917void
918RsDoResourceTemplate (
919 ACPI_PARSE_OBJECT *Op);
920
921
922/*
923 * aslrestype1 - Miscellaneous Small descriptors
924 */
925ASL_RESOURCE_NODE *
926RsDoEndTagDescriptor (
927 ACPI_PARSE_OBJECT *Op,
928 UINT32 CurrentByteOffset);
929
930ASL_RESOURCE_NODE *
931RsDoEndDependentDescriptor (
932 ACPI_PARSE_OBJECT *Op,
933 UINT32 CurrentByteOffset);
934
935ASL_RESOURCE_NODE *
936RsDoMemory24Descriptor (
937 ACPI_PARSE_OBJECT *Op,
938 UINT32 CurrentByteOffset);
939
940ASL_RESOURCE_NODE *
941RsDoMemory32Descriptor (
942 ACPI_PARSE_OBJECT *Op,
943 UINT32 CurrentByteOffset);
944
945ASL_RESOURCE_NODE *
946RsDoMemory32FixedDescriptor (
947 ACPI_PARSE_OBJECT *Op,
948 UINT32 CurrentByteOffset);
949
950ASL_RESOURCE_NODE *
951RsDoStartDependentDescriptor (
952 ACPI_PARSE_OBJECT *Op,
953 UINT32 CurrentByteOffset);
954
955ASL_RESOURCE_NODE *
956RsDoStartDependentNoPriDescriptor (
957 ACPI_PARSE_OBJECT *Op,
958 UINT32 CurrentByteOffset);
959
960ASL_RESOURCE_NODE *
961RsDoVendorSmallDescriptor (
962 ACPI_PARSE_OBJECT *Op,
963 UINT32 CurrentByteOffset);
964
965
966/*
967 * aslrestype1i - I/O-related Small descriptors
968 */
969ASL_RESOURCE_NODE *
970RsDoDmaDescriptor (
971 ACPI_PARSE_OBJECT *Op,
972 UINT32 CurrentByteOffset);
973
974ASL_RESOURCE_NODE *
975RsDoFixedDmaDescriptor (
976 ACPI_PARSE_OBJECT *Op,
977 UINT32 CurrentByteOffset);
978
979ASL_RESOURCE_NODE *
980RsDoFixedIoDescriptor (
981 ACPI_PARSE_OBJECT *Op,
982 UINT32 CurrentByteOffset);
983
984ASL_RESOURCE_NODE *
985RsDoIoDescriptor (
986 ACPI_PARSE_OBJECT *Op,
987 UINT32 CurrentByteOffset);
988
989ASL_RESOURCE_NODE *
990RsDoIrqDescriptor (
991 ACPI_PARSE_OBJECT *Op,
992 UINT32 CurrentByteOffset);
993
994ASL_RESOURCE_NODE *
995RsDoIrqNoFlagsDescriptor (
996 ACPI_PARSE_OBJECT *Op,
997 UINT32 CurrentByteOffset);
998
999
1000/*
1001 * aslrestype2 - Large resource descriptors
1002 */
1003ASL_RESOURCE_NODE *
1004RsDoInterruptDescriptor (
1005 ACPI_PARSE_OBJECT *Op,
1006 UINT32 CurrentByteOffset);
1007
1008ASL_RESOURCE_NODE *
1009RsDoVendorLargeDescriptor (
1010 ACPI_PARSE_OBJECT *Op,
1011 UINT32 CurrentByteOffset);
1012
1013ASL_RESOURCE_NODE *
1014RsDoGeneralRegisterDescriptor (
1015 ACPI_PARSE_OBJECT *Op,
1016 UINT32 CurrentByteOffset);
1017
1018ASL_RESOURCE_NODE *
1019RsDoGpioIntDescriptor (
1020 ACPI_PARSE_OBJECT *Op,
1021 UINT32 CurrentByteOffset);
1022
1023ASL_RESOURCE_NODE *
1024RsDoGpioIoDescriptor (
1025 ACPI_PARSE_OBJECT *Op,
1026 UINT32 CurrentByteOffset);
1027
1028ASL_RESOURCE_NODE *
1029RsDoI2cSerialBusDescriptor (
1030 ACPI_PARSE_OBJECT *Op,
1031 UINT32 CurrentByteOffset);
1032
1033ASL_RESOURCE_NODE *
1034RsDoSpiSerialBusDescriptor (
1035 ACPI_PARSE_OBJECT *Op,
1036 UINT32 CurrentByteOffset);
1037
1038ASL_RESOURCE_NODE *
1039RsDoUartSerialBusDescriptor (
1040 ACPI_PARSE_OBJECT *Op,
1041 UINT32 CurrentByteOffset);
1042
1043/*
1044 * aslrestype2d - DWord address descriptors
1045 */
1046ASL_RESOURCE_NODE *
1047RsDoDwordIoDescriptor (
1048 ACPI_PARSE_OBJECT *Op,
1049 UINT32 CurrentByteOffset);
1050
1051ASL_RESOURCE_NODE *
1052RsDoDwordMemoryDescriptor (
1053 ACPI_PARSE_OBJECT *Op,
1054 UINT32 CurrentByteOffset);
1055
1056ASL_RESOURCE_NODE *
1057RsDoDwordSpaceDescriptor (
1058 ACPI_PARSE_OBJECT *Op,
1059 UINT32 CurrentByteOffset);
1060
1061
1062/*
1063 * aslrestype2e - Extended address descriptors
1064 */
1065ASL_RESOURCE_NODE *
1066RsDoExtendedIoDescriptor (
1067 ACPI_PARSE_OBJECT *Op,
1068 UINT32 CurrentByteOffset);
1069
1070ASL_RESOURCE_NODE *
1071RsDoExtendedMemoryDescriptor (
1072 ACPI_PARSE_OBJECT *Op,
1073 UINT32 CurrentByteOffset);
1074
1075ASL_RESOURCE_NODE *
1076RsDoExtendedSpaceDescriptor (
1077 ACPI_PARSE_OBJECT *Op,
1078 UINT32 CurrentByteOffset);
1079
1080
1081/*
1082 * aslrestype2q - QWord address descriptors
1083 */
1084ASL_RESOURCE_NODE *
1085RsDoQwordIoDescriptor (
1086 ACPI_PARSE_OBJECT *Op,
1087 UINT32 CurrentByteOffset);
1088
1089ASL_RESOURCE_NODE *
1090RsDoQwordMemoryDescriptor (
1091 ACPI_PARSE_OBJECT *Op,
1092 UINT32 CurrentByteOffset);
1093
1094ASL_RESOURCE_NODE *
1095RsDoQwordSpaceDescriptor (
1096 ACPI_PARSE_OBJECT *Op,
1097 UINT32 CurrentByteOffset);
1098
1099
1100/*
1101 * aslrestype2w - Word address descriptors
1102 */
1103ASL_RESOURCE_NODE *
1104RsDoWordIoDescriptor (
1105 ACPI_PARSE_OBJECT *Op,
1106 UINT32 CurrentByteOffset);
1107
1108ASL_RESOURCE_NODE *
1109RsDoWordSpaceDescriptor (
1110 ACPI_PARSE_OBJECT *Op,
1111 UINT32 CurrentByteOffset);
1112
1113ASL_RESOURCE_NODE *
1114RsDoWordBusNumberDescriptor (
1115 ACPI_PARSE_OBJECT *Op,
1116 UINT32 CurrentByteOffset);
1117
1118/*
1119 * Entry to data table compiler subsystem
1120 */
1121ACPI_STATUS
1122DtDoCompile(
1123 void);
1124
1125ACPI_STATUS
1126DtCreateTemplates (
1127 char *Signature);
1128
1129#endif /* __ASLCOMPILER_H */
89ACPI_PARSE_OBJECT *
90AslDoError (
91 void);
92
93int
94AslCompilerlex(
95 void);
96
97void
98AslResetCurrentLineBuffer (
99 void);
100
101void
102AslInsertLineBuffer (
103 int SourceChar);
104
105int
106AslPopInputFileStack (
107 void);
108
109void
110AslPushInputFileStack (
111 FILE *InputFile,
112 char *Filename);
113
114/*
115 * aslstartup - entered from main()
116 */
117void
118AslInitializeGlobals (
119 void);
120
121typedef
122ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
123 char *);
124
125ACPI_STATUS
126AslDoOnePathname (
127 char *Pathname,
128 ASL_PATHNAME_CALLBACK Callback);
129
130ACPI_STATUS
131AslDoOneFile (
132 char *Filename);
133
134ACPI_STATUS
135AslCheckForErrorExit (
136 void);
137
138
139/*
140 * aslcompile - compile mainline
141 */
142void
143AslCompilerSignon (
144 UINT32 FileId);
145
146void
147AslCompilerFileHeader (
148 UINT32 FileId);
149
150int
151CmDoCompile (
152 void);
153
154void
155CmDoOutputFiles (
156 void);
157
158void
159CmCleanupAndExit (
160 void);
161
162ACPI_STATUS
163FlCheckForAscii (
164 FILE *Handle,
165 char *Filename,
166 BOOLEAN DisplayErrors);
167
168
169/*
170 * aslwalks - semantic analysis and parse tree walks
171 */
172ACPI_STATUS
173AnOtherSemanticAnalysisWalkBegin (
174 ACPI_PARSE_OBJECT *Op,
175 UINT32 Level,
176 void *Context);
177
178ACPI_STATUS
179AnOtherSemanticAnalysisWalkEnd (
180 ACPI_PARSE_OBJECT *Op,
181 UINT32 Level,
182 void *Context);
183
184ACPI_STATUS
185AnOperandTypecheckWalkEnd (
186 ACPI_PARSE_OBJECT *Op,
187 UINT32 Level,
188 void *Context);
189
190ACPI_STATUS
191AnMethodAnalysisWalkBegin (
192 ACPI_PARSE_OBJECT *Op,
193 UINT32 Level,
194 void *Context);
195
196ACPI_STATUS
197AnMethodAnalysisWalkEnd (
198 ACPI_PARSE_OBJECT *Op,
199 UINT32 Level,
200 void *Context);
201
202ACPI_STATUS
203AnMethodTypingWalkEnd (
204 ACPI_PARSE_OBJECT *Op,
205 UINT32 Level,
206 void *Context);
207
208
209/*
210 * aslbtypes - bitfield data types
211 */
212UINT32
213AnMapObjTypeToBtype (
214 ACPI_PARSE_OBJECT *Op);
215
216UINT32
217AnMapArgTypeToBtype (
218 UINT32 ArgType);
219
220UINT32
221AnGetBtype (
222 ACPI_PARSE_OBJECT *Op);
223
224void
225AnFormatBtype (
226 char *Buffer,
227 UINT32 Btype);
228
229
230/*
231 * aslanalyze - Support functions for parse tree walks
232 */
233void
234AnCheckId (
235 ACPI_PARSE_OBJECT *Op,
236 ACPI_NAME Type);
237
238/* Values for Type argument above */
239
240#define ASL_TYPE_HID 0
241#define ASL_TYPE_CID 1
242
243BOOLEAN
244AnIsInternalMethod (
245 ACPI_PARSE_OBJECT *Op);
246
247UINT32
248AnGetInternalMethodReturnType (
249 ACPI_PARSE_OBJECT *Op);
250
251BOOLEAN
252AnLastStatementIsReturn (
253 ACPI_PARSE_OBJECT *Op);
254
255void
256AnCheckMethodReturnValue (
257 ACPI_PARSE_OBJECT *Op,
258 const ACPI_OPCODE_INFO *OpInfo,
259 ACPI_PARSE_OBJECT *ArgOp,
260 UINT32 RequiredBtypes,
261 UINT32 ThisNodeBtype);
262
263BOOLEAN
264AnIsResultUsed (
265 ACPI_PARSE_OBJECT *Op);
266
267void
268ApCheckForGpeNameConflict (
269 ACPI_PARSE_OBJECT *Op);
270
271void
272ApCheckRegMethod (
273 ACPI_PARSE_OBJECT *Op);
274
275
276/*
277 * aslerror - error handling/reporting
278 */
279void
280AslError (
281 UINT8 Level,
282 UINT8 MessageId,
283 ACPI_PARSE_OBJECT *Op,
284 char *ExtraMessage);
285
286void
287AslCoreSubsystemError (
288 ACPI_PARSE_OBJECT *Op,
289 ACPI_STATUS Status,
290 char *ExtraMessage,
291 BOOLEAN Abort);
292
293int
294AslCompilererror(
295 const char *s);
296
297void
298AslCommonError (
299 UINT8 Level,
300 UINT8 MessageId,
301 UINT32 CurrentLineNumber,
302 UINT32 LogicalLineNumber,
303 UINT32 LogicalByteOffset,
304 UINT32 Column,
305 char *Filename,
306 char *ExtraMessage);
307
308void
309AslCommonError2 (
310 UINT8 Level,
311 UINT8 MessageId,
312 UINT32 LineNumber,
313 UINT32 Column,
314 char *SourceLine,
315 char *Filename,
316 char *ExtraMessage);
317
318void
319AePrintException (
320 UINT32 FileId,
321 ASL_ERROR_MSG *Enode,
322 char *Header);
323
324void
325AePrintErrorLog (
326 UINT32 FileId);
327
328void
329AeClearErrorLog (
330 void);
331
332ACPI_PHYSICAL_ADDRESS
333AeLocalGetRootPointer (
334 void);
335
336
337/*
338 * asllisting - generate all "listing" type files
339 */
340void
341LsDoListings (
342 void);
343
344void
345LsWriteNodeToAsmListing (
346 ACPI_PARSE_OBJECT *Op);
347
348void
349LsWriteNode (
350 ACPI_PARSE_OBJECT *Op,
351 UINT32 FileId);
352
353void
354LsDoHexOutput (
355 void);
356
357void
358LsDumpParseTree (
359 void);
360
361/*
362 * aslfold - constant folding
363 */
364ACPI_STATUS
365OpcAmlConstantWalk (
366 ACPI_PARSE_OBJECT *Op,
367 UINT32 Level,
368 void *Context);
369
370
371/*
372 * aslopcodes - generate AML opcodes
373 */
374ACPI_STATUS
375OpcAmlOpcodeWalk (
376 ACPI_PARSE_OBJECT *Op,
377 UINT32 Level,
378 void *Context);
379
380ACPI_STATUS
381OpcAmlOpcodeUpdateWalk (
382 ACPI_PARSE_OBJECT *Op,
383 UINT32 Level,
384 void *Context);
385
386void
387OpcGenerateAmlOpcode (
388 ACPI_PARSE_OBJECT *Op);
389
390UINT32
391OpcSetOptimalIntegerSize (
392 ACPI_PARSE_OBJECT *Op);
393
394void
395OpcGetIntegerWidth (
396 ACPI_PARSE_OBJECT *Op);
397
398
399/*
400 * asloperands - generate AML operands for the AML opcodes
401 */
402ACPI_PARSE_OBJECT *
403UtGetArg (
404 ACPI_PARSE_OBJECT *Op,
405 UINT32 Argn);
406
407void
408OpnGenerateAmlOperands (
409 ACPI_PARSE_OBJECT *Op);
410
411void
412OpnDoPackage (
413 ACPI_PARSE_OBJECT *Op);
414
415
416/*
417 * aslopt - optmization
418 */
419void
420OptOptimizeNamePath (
421 ACPI_PARSE_OBJECT *Op,
422 UINT32 Flags,
423 ACPI_WALK_STATE *WalkState,
424 char *AmlNameString,
425 ACPI_NAMESPACE_NODE *TargetNode);
426
427
428/*
429 * aslcodegen - code generation
430 */
431void
432CgGenerateAmlOutput (
433 void);
434
435
436/*
437 * aslfile
438 */
439void
440FlOpenFile (
441 UINT32 FileId,
442 char *Filename,
443 char *Mode);
444
445
446/*
447 * asllength - calculate/adjust AML package lengths
448 */
449ACPI_STATUS
450LnPackageLengthWalk (
451 ACPI_PARSE_OBJECT *Op,
452 UINT32 Level,
453 void *Context);
454
455ACPI_STATUS
456LnInitLengthsWalk (
457 ACPI_PARSE_OBJECT *Op,
458 UINT32 Level,
459 void *Context);
460
461void
462CgGenerateAmlLengths (
463 ACPI_PARSE_OBJECT *Op);
464
465
466/*
467 * aslmap - opcode mappings and reserved method names
468 */
469ACPI_OBJECT_TYPE
470AslMapNamedOpcodeToDataType (
471 UINT16 Opcode);
472
473
474/*
475 * aslpredef - ACPI predefined names support
476 */
477BOOLEAN
478ApCheckForPredefinedMethod (
479 ACPI_PARSE_OBJECT *Op,
480 ASL_METHOD_INFO *MethodInfo);
481
482void
483ApCheckPredefinedReturnValue (
484 ACPI_PARSE_OBJECT *Op,
485 ASL_METHOD_INFO *MethodInfo);
486
487UINT32
488ApCheckForPredefinedName (
489 ACPI_PARSE_OBJECT *Op,
490 char *Name);
491
492void
493ApCheckForPredefinedObject (
494 ACPI_PARSE_OBJECT *Op,
495 char *Name);
496
497void
498ApDisplayReservedNames (
499 void);
500
501
502/*
503 * asltransform - parse tree transformations
504 */
505ACPI_STATUS
506TrAmlTransformWalk (
507 ACPI_PARSE_OBJECT *Op,
508 UINT32 Level,
509 void *Context);
510
511
512/*
513 * asltree - parse tree support
514 */
515ACPI_STATUS
516TrWalkParseTree (
517 ACPI_PARSE_OBJECT *Op,
518 UINT32 Visitation,
519 ASL_WALK_CALLBACK DescendingCallback,
520 ASL_WALK_CALLBACK AscendingCallback,
521 void *Context);
522
523/* Values for "Visitation" parameter above */
524
525#define ASL_WALK_VISIT_DOWNWARD 0x01
526#define ASL_WALK_VISIT_UPWARD 0x02
527#define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
528
529
530ACPI_PARSE_OBJECT *
531TrAllocateNode (
532 UINT32 ParseOpcode);
533
534void
535TrReleaseNode (
536 ACPI_PARSE_OBJECT *Op);
537
538ACPI_PARSE_OBJECT *
539TrUpdateNode (
540 UINT32 ParseOpcode,
541 ACPI_PARSE_OBJECT *Op);
542
543ACPI_PARSE_OBJECT *
544TrCreateNode (
545 UINT32 ParseOpcode,
546 UINT32 NumChildren,
547 ...);
548
549ACPI_PARSE_OBJECT *
550TrCreateLeafNode (
551 UINT32 ParseOpcode);
552
553ACPI_PARSE_OBJECT *
554TrCreateValuedLeafNode (
555 UINT32 ParseOpcode,
556 UINT64 Value);
557
558ACPI_PARSE_OBJECT *
559TrCreateConstantLeafNode (
560 UINT32 ParseOpcode);
561
562ACPI_PARSE_OBJECT *
563TrLinkChildren (
564 ACPI_PARSE_OBJECT *Op,
565 UINT32 NumChildren,
566 ...);
567
568void
569TrSetEndLineNumber (
570 ACPI_PARSE_OBJECT *Op);
571
572void
573TrWalkTree (
574 void);
575
576ACPI_PARSE_OBJECT *
577TrLinkPeerNode (
578 ACPI_PARSE_OBJECT *Op1,
579 ACPI_PARSE_OBJECT *Op2);
580
581ACPI_PARSE_OBJECT *
582TrLinkChildNode (
583 ACPI_PARSE_OBJECT *Op1,
584 ACPI_PARSE_OBJECT *Op2);
585
586ACPI_PARSE_OBJECT *
587TrSetNodeFlags (
588 ACPI_PARSE_OBJECT *Op,
589 UINT32 Flags);
590
591ACPI_PARSE_OBJECT *
592TrSetNodeAmlLength (
593 ACPI_PARSE_OBJECT *Op,
594 UINT32 Length);
595
596ACPI_PARSE_OBJECT *
597TrLinkPeerNodes (
598 UINT32 NumPeers,
599 ...);
600
601
602/*
603 * aslfiles - File I/O support
604 */
605void
606AslAbort (
607 void);
608
609void
610FlAddIncludeDirectory (
611 char *Dir);
612
613char *
614FlMergePathnames (
615 char *PrefixDir,
616 char *FilePathname);
617
618void
619FlOpenIncludeFile (
620 ACPI_PARSE_OBJECT *Op);
621
622void
623FlFileError (
624 UINT32 FileId,
625 UINT8 ErrorId);
626
627UINT32
628FlGetFileSize (
629 UINT32 FileId);
630
631ACPI_STATUS
632FlReadFile (
633 UINT32 FileId,
634 void *Buffer,
635 UINT32 Length);
636
637void
638FlWriteFile (
639 UINT32 FileId,
640 void *Buffer,
641 UINT32 Length);
642
643void
644FlSeekFile (
645 UINT32 FileId,
646 long Offset);
647
648void
649FlCloseFile (
650 UINT32 FileId);
651
652void
653FlPrintFile (
654 UINT32 FileId,
655 char *Format,
656 ...);
657
658void
659FlDeleteFile (
660 UINT32 FileId);
661
662void
663FlSetLineNumber (
664 UINT32 LineNumber);
665
666void
667FlSetFilename (
668 char *Filename);
669
670ACPI_STATUS
671FlOpenInputFile (
672 char *InputFilename);
673
674ACPI_STATUS
675FlOpenAmlOutputFile (
676 char *InputFilename);
677
678ACPI_STATUS
679FlOpenMiscOutputFiles (
680 char *InputFilename);
681
682
683/*
684 * asload - load namespace in prep for cross reference
685 */
686ACPI_STATUS
687LdLoadNamespace (
688 ACPI_PARSE_OBJECT *RootOp);
689
690
691/*
692 * asllookup - namespace cross reference
693 */
694ACPI_STATUS
695LkCrossReferenceNamespace (
696 void);
697
698void
699LkFindUnreferencedObjects (
700 void);
701
702ACPI_STATUS
703LsDisplayNamespace (
704 void);
705
706void
707LsSetupNsList (
708 void *Handle);
709
710
711/*
712 * aslutils - common compiler utilites
713 */
714void
715DbgPrint (
716 UINT32 Type,
717 char *Format,
718 ...);
719
720/* Type values for above */
721
722#define ASL_DEBUG_OUTPUT 0
723#define ASL_PARSE_OUTPUT 1
724#define ASL_TREE_OUTPUT 2
725
726void
727UtDisplaySupportedTables (
728 void);
729
730void
731UtDisplayConstantOpcodes (
732 void);
733
734UINT8
735UtBeginEvent (
736 char *Name);
737
738void
739UtEndEvent (
740 UINT8 Event);
741
742void *
743UtLocalCalloc (
744 UINT32 Size);
745
746void
747UtPrintFormattedName (
748 UINT16 ParseOpcode,
749 UINT32 Level);
750
751void
752UtDisplaySummary (
753 UINT32 FileId);
754
755UINT8
756UtHexCharToValue (
757 int HexChar);
758
759void
760UtConvertByteToHex (
761 UINT8 RawByte,
762 UINT8 *Buffer);
763
764void
765UtConvertByteToAsmHex (
766 UINT8 RawByte,
767 UINT8 *Buffer);
768
769char *
770UtGetOpName (
771 UINT32 ParseOpcode);
772
773void
774UtSetParseOpName (
775 ACPI_PARSE_OBJECT *Op);
776
777char *
778UtGetStringBuffer (
779 UINT32 Length);
780
781void
782UtExpandLineBuffers (
783 void);
784
785ACPI_STATUS
786UtInternalizeName (
787 char *ExternalName,
788 char **ConvertedName);
789
790void
791UtAttachNamepathToOwner (
792 ACPI_PARSE_OBJECT *Op,
793 ACPI_PARSE_OBJECT *NameNode);
794
795ACPI_PARSE_OBJECT *
796UtCheckIntegerRange (
797 ACPI_PARSE_OBJECT *Op,
798 UINT32 LowValue,
799 UINT32 HighValue);
800
801UINT64
802UtDoConstant (
803 char *String);
804
805ACPI_STATUS
806UtStrtoul64 (
807 char *String,
808 UINT32 Base,
809 UINT64 *RetInteger);
810
811
812/*
813 * asluuid - UUID support
814 */
815ACPI_STATUS
816AuValidateUuid (
817 char *InString);
818
819ACPI_STATUS
820AuConvertStringToUuid (
821 char *InString,
822 char *UuIdBuffer);
823
824ACPI_STATUS
825AuConvertUuidToString (
826 char *UuIdBuffer,
827 char *OutString);
828
829/*
830 * aslresource - Resource template generation utilities
831 */
832void
833RsSmallAddressCheck (
834 UINT8 Type,
835 UINT32 Minimum,
836 UINT32 Maximum,
837 UINT32 Length,
838 UINT32 Alignment,
839 ACPI_PARSE_OBJECT *MinOp,
840 ACPI_PARSE_OBJECT *MaxOp,
841 ACPI_PARSE_OBJECT *LengthOp,
842 ACPI_PARSE_OBJECT *AlignOp,
843 ACPI_PARSE_OBJECT *Op);
844
845void
846RsLargeAddressCheck (
847 UINT64 Minimum,
848 UINT64 Maximum,
849 UINT64 Length,
850 UINT64 Granularity,
851 UINT8 Flags,
852 ACPI_PARSE_OBJECT *MinOp,
853 ACPI_PARSE_OBJECT *MaxOp,
854 ACPI_PARSE_OBJECT *LengthOp,
855 ACPI_PARSE_OBJECT *GranOp,
856 ACPI_PARSE_OBJECT *Op);
857
858UINT16
859RsGetStringDataLength (
860 ACPI_PARSE_OBJECT *InitializerOp);
861
862ASL_RESOURCE_NODE *
863RsAllocateResourceNode (
864 UINT32 Size);
865
866void
867RsCreateResourceField (
868 ACPI_PARSE_OBJECT *Op,
869 char *Name,
870 UINT32 ByteOffset,
871 UINT32 BitOffset,
872 UINT32 BitLength);
873
874void
875RsSetFlagBits (
876 UINT8 *Flags,
877 ACPI_PARSE_OBJECT *Op,
878 UINT8 Position,
879 UINT8 DefaultBit);
880
881void
882RsSetFlagBits16 (
883 UINT16 *Flags,
884 ACPI_PARSE_OBJECT *Op,
885 UINT8 Position,
886 UINT8 DefaultBit);
887
888ACPI_PARSE_OBJECT *
889RsCompleteNodeAndGetNext (
890 ACPI_PARSE_OBJECT *Op);
891
892void
893RsCheckListForDuplicates (
894 ACPI_PARSE_OBJECT *Op);
895
896ASL_RESOURCE_NODE *
897RsDoOneResourceDescriptor (
898 ACPI_PARSE_OBJECT *DescriptorTypeOp,
899 UINT32 CurrentByteOffset,
900 UINT8 *State);
901
902/* Values for State above */
903
904#define ACPI_RSTATE_NORMAL 0
905#define ACPI_RSTATE_START_DEPENDENT 1
906#define ACPI_RSTATE_DEPENDENT_LIST 2
907
908UINT32
909RsLinkDescriptorChain (
910 ASL_RESOURCE_NODE **PreviousRnode,
911 ASL_RESOURCE_NODE *Rnode);
912
913void
914RsDoResourceTemplate (
915 ACPI_PARSE_OBJECT *Op);
916
917
918/*
919 * aslrestype1 - Miscellaneous Small descriptors
920 */
921ASL_RESOURCE_NODE *
922RsDoEndTagDescriptor (
923 ACPI_PARSE_OBJECT *Op,
924 UINT32 CurrentByteOffset);
925
926ASL_RESOURCE_NODE *
927RsDoEndDependentDescriptor (
928 ACPI_PARSE_OBJECT *Op,
929 UINT32 CurrentByteOffset);
930
931ASL_RESOURCE_NODE *
932RsDoMemory24Descriptor (
933 ACPI_PARSE_OBJECT *Op,
934 UINT32 CurrentByteOffset);
935
936ASL_RESOURCE_NODE *
937RsDoMemory32Descriptor (
938 ACPI_PARSE_OBJECT *Op,
939 UINT32 CurrentByteOffset);
940
941ASL_RESOURCE_NODE *
942RsDoMemory32FixedDescriptor (
943 ACPI_PARSE_OBJECT *Op,
944 UINT32 CurrentByteOffset);
945
946ASL_RESOURCE_NODE *
947RsDoStartDependentDescriptor (
948 ACPI_PARSE_OBJECT *Op,
949 UINT32 CurrentByteOffset);
950
951ASL_RESOURCE_NODE *
952RsDoStartDependentNoPriDescriptor (
953 ACPI_PARSE_OBJECT *Op,
954 UINT32 CurrentByteOffset);
955
956ASL_RESOURCE_NODE *
957RsDoVendorSmallDescriptor (
958 ACPI_PARSE_OBJECT *Op,
959 UINT32 CurrentByteOffset);
960
961
962/*
963 * aslrestype1i - I/O-related Small descriptors
964 */
965ASL_RESOURCE_NODE *
966RsDoDmaDescriptor (
967 ACPI_PARSE_OBJECT *Op,
968 UINT32 CurrentByteOffset);
969
970ASL_RESOURCE_NODE *
971RsDoFixedDmaDescriptor (
972 ACPI_PARSE_OBJECT *Op,
973 UINT32 CurrentByteOffset);
974
975ASL_RESOURCE_NODE *
976RsDoFixedIoDescriptor (
977 ACPI_PARSE_OBJECT *Op,
978 UINT32 CurrentByteOffset);
979
980ASL_RESOURCE_NODE *
981RsDoIoDescriptor (
982 ACPI_PARSE_OBJECT *Op,
983 UINT32 CurrentByteOffset);
984
985ASL_RESOURCE_NODE *
986RsDoIrqDescriptor (
987 ACPI_PARSE_OBJECT *Op,
988 UINT32 CurrentByteOffset);
989
990ASL_RESOURCE_NODE *
991RsDoIrqNoFlagsDescriptor (
992 ACPI_PARSE_OBJECT *Op,
993 UINT32 CurrentByteOffset);
994
995
996/*
997 * aslrestype2 - Large resource descriptors
998 */
999ASL_RESOURCE_NODE *
1000RsDoInterruptDescriptor (
1001 ACPI_PARSE_OBJECT *Op,
1002 UINT32 CurrentByteOffset);
1003
1004ASL_RESOURCE_NODE *
1005RsDoVendorLargeDescriptor (
1006 ACPI_PARSE_OBJECT *Op,
1007 UINT32 CurrentByteOffset);
1008
1009ASL_RESOURCE_NODE *
1010RsDoGeneralRegisterDescriptor (
1011 ACPI_PARSE_OBJECT *Op,
1012 UINT32 CurrentByteOffset);
1013
1014ASL_RESOURCE_NODE *
1015RsDoGpioIntDescriptor (
1016 ACPI_PARSE_OBJECT *Op,
1017 UINT32 CurrentByteOffset);
1018
1019ASL_RESOURCE_NODE *
1020RsDoGpioIoDescriptor (
1021 ACPI_PARSE_OBJECT *Op,
1022 UINT32 CurrentByteOffset);
1023
1024ASL_RESOURCE_NODE *
1025RsDoI2cSerialBusDescriptor (
1026 ACPI_PARSE_OBJECT *Op,
1027 UINT32 CurrentByteOffset);
1028
1029ASL_RESOURCE_NODE *
1030RsDoSpiSerialBusDescriptor (
1031 ACPI_PARSE_OBJECT *Op,
1032 UINT32 CurrentByteOffset);
1033
1034ASL_RESOURCE_NODE *
1035RsDoUartSerialBusDescriptor (
1036 ACPI_PARSE_OBJECT *Op,
1037 UINT32 CurrentByteOffset);
1038
1039/*
1040 * aslrestype2d - DWord address descriptors
1041 */
1042ASL_RESOURCE_NODE *
1043RsDoDwordIoDescriptor (
1044 ACPI_PARSE_OBJECT *Op,
1045 UINT32 CurrentByteOffset);
1046
1047ASL_RESOURCE_NODE *
1048RsDoDwordMemoryDescriptor (
1049 ACPI_PARSE_OBJECT *Op,
1050 UINT32 CurrentByteOffset);
1051
1052ASL_RESOURCE_NODE *
1053RsDoDwordSpaceDescriptor (
1054 ACPI_PARSE_OBJECT *Op,
1055 UINT32 CurrentByteOffset);
1056
1057
1058/*
1059 * aslrestype2e - Extended address descriptors
1060 */
1061ASL_RESOURCE_NODE *
1062RsDoExtendedIoDescriptor (
1063 ACPI_PARSE_OBJECT *Op,
1064 UINT32 CurrentByteOffset);
1065
1066ASL_RESOURCE_NODE *
1067RsDoExtendedMemoryDescriptor (
1068 ACPI_PARSE_OBJECT *Op,
1069 UINT32 CurrentByteOffset);
1070
1071ASL_RESOURCE_NODE *
1072RsDoExtendedSpaceDescriptor (
1073 ACPI_PARSE_OBJECT *Op,
1074 UINT32 CurrentByteOffset);
1075
1076
1077/*
1078 * aslrestype2q - QWord address descriptors
1079 */
1080ASL_RESOURCE_NODE *
1081RsDoQwordIoDescriptor (
1082 ACPI_PARSE_OBJECT *Op,
1083 UINT32 CurrentByteOffset);
1084
1085ASL_RESOURCE_NODE *
1086RsDoQwordMemoryDescriptor (
1087 ACPI_PARSE_OBJECT *Op,
1088 UINT32 CurrentByteOffset);
1089
1090ASL_RESOURCE_NODE *
1091RsDoQwordSpaceDescriptor (
1092 ACPI_PARSE_OBJECT *Op,
1093 UINT32 CurrentByteOffset);
1094
1095
1096/*
1097 * aslrestype2w - Word address descriptors
1098 */
1099ASL_RESOURCE_NODE *
1100RsDoWordIoDescriptor (
1101 ACPI_PARSE_OBJECT *Op,
1102 UINT32 CurrentByteOffset);
1103
1104ASL_RESOURCE_NODE *
1105RsDoWordSpaceDescriptor (
1106 ACPI_PARSE_OBJECT *Op,
1107 UINT32 CurrentByteOffset);
1108
1109ASL_RESOURCE_NODE *
1110RsDoWordBusNumberDescriptor (
1111 ACPI_PARSE_OBJECT *Op,
1112 UINT32 CurrentByteOffset);
1113
1114/*
1115 * Entry to data table compiler subsystem
1116 */
1117ACPI_STATUS
1118DtDoCompile(
1119 void);
1120
1121ACPI_STATUS
1122DtCreateTemplates (
1123 char *Signature);
1124
1125#endif /* __ASLCOMPILER_H */