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