Home | History | Annotate | Line # | Download | only in include
acdisasm.h revision 1.8
      1 /******************************************************************************
      2  *
      3  * Name: acdisasm.h - AML disassembler
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2015, 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 #ifndef __ACDISASM_H__
     45 #define __ACDISASM_H__
     46 
     47 #include "amlresrc.h"
     48 
     49 
     50 #define BLOCK_NONE              0
     51 #define BLOCK_PAREN             1
     52 #define BLOCK_BRACE             2
     53 #define BLOCK_COMMA_LIST        4
     54 #define ACPI_DEFAULT_RESNAME    *(const UINT32 *) "__RD"
     55 
     56 /*
     57  * Raw table data header. Used by disassembler and data table compiler.
     58  * Do not change.
     59  */
     60 #define ACPI_RAW_TABLE_DATA_HEADER      "Raw Table Data"
     61 
     62 
     63 typedef struct acpi_dmtable_info
     64 {
     65     UINT8                       Opcode;
     66     UINT16                      Offset;
     67     char                        *Name;
     68     UINT8                       Flags;
     69 
     70 } ACPI_DMTABLE_INFO;
     71 
     72 /* Values for Flags field above */
     73 
     74 #define DT_LENGTH                       0x01    /* Field is a subtable length */
     75 #define DT_FLAG                         0x02    /* Field is a flag value */
     76 #define DT_NON_ZERO                     0x04    /* Field must be non-zero */
     77 #define DT_OPTIONAL                     0x08    /* Field is optional */
     78 #define DT_DESCRIBES_OPTIONAL           0x10    /* Field describes an optional field (length, etc.) */
     79 #define DT_COUNT                        0x20    /* Currently not used */
     80 
     81 /*
     82  * Values for Opcode above.
     83  * Note: 0-7 must not change, they are used as a flag shift value. Other
     84  * than those, new values can be added wherever appropriate.
     85  */
     86 typedef enum
     87 {
     88     /* Simple Data Types */
     89 
     90     ACPI_DMT_FLAG0          = 0,
     91     ACPI_DMT_FLAG1          = 1,
     92     ACPI_DMT_FLAG2          = 2,
     93     ACPI_DMT_FLAG3          = 3,
     94     ACPI_DMT_FLAG4          = 4,
     95     ACPI_DMT_FLAG5          = 5,
     96     ACPI_DMT_FLAG6          = 6,
     97     ACPI_DMT_FLAG7          = 7,
     98     ACPI_DMT_FLAGS0,
     99     ACPI_DMT_FLAGS1,
    100     ACPI_DMT_FLAGS2,
    101     ACPI_DMT_FLAGS4,
    102     ACPI_DMT_UINT8,
    103     ACPI_DMT_UINT16,
    104     ACPI_DMT_UINT24,
    105     ACPI_DMT_UINT32,
    106     ACPI_DMT_UINT40,
    107     ACPI_DMT_UINT48,
    108     ACPI_DMT_UINT56,
    109     ACPI_DMT_UINT64,
    110     ACPI_DMT_BUF7,
    111     ACPI_DMT_BUF10,
    112     ACPI_DMT_BUF16,
    113     ACPI_DMT_BUF128,
    114     ACPI_DMT_SIG,
    115     ACPI_DMT_STRING,
    116     ACPI_DMT_NAME4,
    117     ACPI_DMT_NAME6,
    118     ACPI_DMT_NAME8,
    119 
    120     /* Types that are decoded to strings and miscellaneous */
    121 
    122     ACPI_DMT_ACCWIDTH,
    123     ACPI_DMT_CHKSUM,
    124     ACPI_DMT_GAS,
    125     ACPI_DMT_SPACEID,
    126     ACPI_DMT_UNICODE,
    127     ACPI_DMT_UUID,
    128 
    129     /* Types used only for the Data Table Compiler */
    130 
    131     ACPI_DMT_BUFFER,
    132     ACPI_DMT_RAW_BUFFER,  /* Large, multiple line buffer */
    133     ACPI_DMT_DEVICE_PATH,
    134     ACPI_DMT_LABEL,
    135     ACPI_DMT_PCI_PATH,
    136 
    137     /* Types that are specific to particular ACPI tables */
    138 
    139     ACPI_DMT_ASF,
    140     ACPI_DMT_DMAR,
    141     ACPI_DMT_DMAR_SCOPE,
    142     ACPI_DMT_EINJACT,
    143     ACPI_DMT_EINJINST,
    144     ACPI_DMT_ERSTACT,
    145     ACPI_DMT_ERSTINST,
    146     ACPI_DMT_FADTPM,
    147     ACPI_DMT_GTDT,
    148     ACPI_DMT_HEST,
    149     ACPI_DMT_HESTNTFY,
    150     ACPI_DMT_HESTNTYP,
    151     ACPI_DMT_IORTMEM,
    152     ACPI_DMT_IVRS,
    153     ACPI_DMT_LPIT,
    154     ACPI_DMT_MADT,
    155     ACPI_DMT_NFIT,
    156     ACPI_DMT_PCCT,
    157     ACPI_DMT_PMTT,
    158     ACPI_DMT_SLIC,
    159     ACPI_DMT_SRAT,
    160 
    161     /* Special opcodes */
    162 
    163     ACPI_DMT_EXTRA_TEXT,
    164     ACPI_DMT_EXIT
    165 
    166 } ACPI_ENTRY_TYPES;
    167 
    168 typedef
    169 void (*ACPI_DMTABLE_HANDLER) (
    170     ACPI_TABLE_HEADER       *Table);
    171 
    172 typedef
    173 ACPI_STATUS (*ACPI_CMTABLE_HANDLER) (
    174     void                    **PFieldList);
    175 
    176 typedef struct acpi_dmtable_data
    177 {
    178     char                    *Signature;
    179     ACPI_DMTABLE_INFO       *TableInfo;
    180     ACPI_DMTABLE_HANDLER    TableHandler;
    181     ACPI_CMTABLE_HANDLER    CmTableHandler;
    182     const unsigned char     *Template;
    183 
    184 } ACPI_DMTABLE_DATA;
    185 
    186 
    187 typedef struct acpi_op_walk_info
    188 {
    189     UINT32                  Level;
    190     UINT32                  LastLevel;
    191     UINT32                  Count;
    192     UINT32                  BitOffset;
    193     UINT32                  Flags;
    194     ACPI_WALK_STATE         *WalkState;
    195     ACPI_PARSE_OBJECT       *MappingOp;
    196 
    197 } ACPI_OP_WALK_INFO;
    198 
    199 /*
    200  * TBD - another copy of this is in asltypes.h, fix
    201  */
    202 #ifndef ASL_WALK_CALLBACK_DEFINED
    203 typedef
    204 ACPI_STATUS (*ASL_WALK_CALLBACK) (
    205     ACPI_PARSE_OBJECT           *Op,
    206     UINT32                      Level,
    207     void                        *Context);
    208 #define ASL_WALK_CALLBACK_DEFINED
    209 #endif
    210 
    211 typedef
    212 void (*ACPI_RESOURCE_HANDLER) (
    213     ACPI_OP_WALK_INFO       *Info,
    214     AML_RESOURCE            *Resource,
    215     UINT32                  Length,
    216     UINT32                  Level);
    217 
    218 typedef struct acpi_resource_tag
    219 {
    220     UINT32                  BitIndex;
    221     char                    *Tag;
    222 
    223 } ACPI_RESOURCE_TAG;
    224 
    225 /* Strings used for decoding flags to ASL keywords */
    226 
    227 extern const char               *AcpiGbl_WordDecode[];
    228 extern const char               *AcpiGbl_IrqDecode[];
    229 extern const char               *AcpiGbl_LockRule[];
    230 extern const char               *AcpiGbl_AccessTypes[];
    231 extern const char               *AcpiGbl_UpdateRules[];
    232 extern const char               *AcpiGbl_MatchOps[];
    233 
    234 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf0[];
    235 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1[];
    236 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1a[];
    237 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2[];
    238 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2a[];
    239 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf3[];
    240 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf4[];
    241 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsfHdr[];
    242 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
    243 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
    244 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
    245 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep[];
    246 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep0[];
    247 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt0[];
    248 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt1[];
    249 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2[];
    250 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2a[];
    251 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2[];
    252 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Device[];
    253 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Addr[];
    254 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Size[];
    255 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Name[];
    256 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2OemData[];
    257 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbgp[];
    258 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar[];
    259 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarHdr[];
    260 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarScope[];
    261 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar0[];
    262 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
    263 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
    264 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
    265 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar4[];
    266 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
    267 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0[];
    268 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0a[];
    269 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm1[];
    270 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm1a[];
    271 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm2[];
    272 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
    273 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
    274 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
    275 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
    276 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
    277 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
    278 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
    279 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
    280 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
    281 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
    282 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt6[];
    283 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
    284 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdtHdr[];
    285 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt0[];
    286 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
    287 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
    288 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
    289 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
    290 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
    291 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
    292 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
    293 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHeader[];
    294 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest[];
    295 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest0[];
    296 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest1[];
    297 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest2[];
    298 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest6[];
    299 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest7[];
    300 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest8[];
    301 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest9[];
    302 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestNotify[];
    303 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestBank[];
    304 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHpet[];
    305 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpitHdr[];
    306 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit0[];
    307 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit1[];
    308 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort[];
    309 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort0[];
    310 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort0a[];
    311 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort1[];
    312 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort1a[];
    313 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort2[];
    314 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3[];
    315 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3a[];
    316 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3b[];
    317 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3c[];
    318 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortAcc[];
    319 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortHdr[];
    320 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortMap[];
    321 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortPad[];
    322 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs[];
    323 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs0[];
    324 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs1[];
    325 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs4[];
    326 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8a[];
    327 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8b[];
    328 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8c[];
    329 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrsHdr[];
    330 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt[];
    331 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt0[];
    332 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt1[];
    333 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt2[];
    334 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt3[];
    335 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt4[];
    336 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt5[];
    337 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt6[];
    338 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt7[];
    339 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
    340 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
    341 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
    342 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
    343 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
    344 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt13[];
    345 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14[];
    346 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt15[];
    347 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
    348 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
    349 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
    350 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
    351 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
    352 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
    353 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
    354 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
    355 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
    356 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
    357 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
    358 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
    359 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr[];
    360 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr0[];
    361 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit[];
    362 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfitHdr[];
    363 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit0[];
    364 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit1[];
    365 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit2[];
    366 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit2a[];
    367 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit3[];
    368 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit3a[];
    369 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit4[];
    370 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit5[];
    371 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6[];
    372 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6a[];
    373 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt[];
    374 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt0[];
    375 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1[];
    376 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1a[];
    377 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt2[];
    378 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmttHdr[];
    379 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct[];
    380 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcctHdr[];
    381 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
    382 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct1[];
    383 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
    384 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
    385 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
    386 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3ptHdr[];
    387 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt0[];
    388 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt1[];
    389 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSbst[];
    390 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic[];
    391 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlit[];
    392 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpcr[];
    393 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpmi[];
    394 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat[];
    395 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSratHdr[];
    396 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat0[];
    397 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
    398 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
    399 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
    400 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
    401 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
    402 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaHdr[];
    403 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaClient[];
    404 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaServer[];
    405 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTpm2[];
    406 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoUefi[];
    407 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc[];
    408 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc0[];
    409 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWaet[];
    410 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat[];
    411 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat0[];
    412 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWddt[];
    413 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdrt[];
    414 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWpbt[];
    415 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWpbt0[];
    416 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoXenv[];
    417 
    418 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
    419 
    420 /*
    421  * dmtable and ahtable
    422  */
    423 extern const ACPI_DMTABLE_DATA  AcpiDmTableData[];
    424 extern const AH_TABLE           AcpiSupportedTables[];
    425 
    426 UINT8
    427 AcpiDmGenerateChecksum (
    428     void                    *Table,
    429     UINT32                  Length,
    430     UINT8                   OriginalChecksum);
    431 
    432 const ACPI_DMTABLE_DATA *
    433 AcpiDmGetTableData (
    434     char                    *Signature);
    435 
    436 void
    437 AcpiDmDumpDataTable (
    438     ACPI_TABLE_HEADER       *Table);
    439 
    440 ACPI_STATUS
    441 AcpiDmDumpTable (
    442     UINT32                  TableLength,
    443     UINT32                  TableOffset,
    444     void                    *Table,
    445     UINT32                  SubTableLength,
    446     ACPI_DMTABLE_INFO        *Info);
    447 
    448 void
    449 AcpiDmLineHeader (
    450     UINT32                  Offset,
    451     UINT32                  ByteLength,
    452     char                    *Name);
    453 
    454 void
    455 AcpiDmLineHeader2 (
    456     UINT32                  Offset,
    457     UINT32                  ByteLength,
    458     char                    *Name,
    459     UINT32                  Value);
    460 
    461 
    462 /*
    463  * dmtbdump
    464  */
    465 void
    466 AcpiDmDumpBuffer (
    467     void                    *Table,
    468     UINT32                  BufferOffset,
    469     UINT32                  Length,
    470     UINT32                  AbsoluteOffset,
    471     char                    *Header);
    472 
    473 void
    474 AcpiDmDumpUnicode (
    475     void                    *Table,
    476     UINT32                  BufferOffset,
    477     UINT32                  ByteLength);
    478 
    479 void
    480 AcpiDmDumpAsf (
    481     ACPI_TABLE_HEADER       *Table);
    482 
    483 void
    484 AcpiDmDumpCpep (
    485     ACPI_TABLE_HEADER       *Table);
    486 
    487 void
    488 AcpiDmDumpCsrt (
    489     ACPI_TABLE_HEADER       *Table);
    490 
    491 void
    492 AcpiDmDumpDbg2 (
    493     ACPI_TABLE_HEADER       *Table);
    494 
    495 void
    496 AcpiDmDumpDmar (
    497     ACPI_TABLE_HEADER       *Table);
    498 
    499 void
    500 AcpiDmDumpDrtm (
    501     ACPI_TABLE_HEADER       *Table);
    502 
    503 void
    504 AcpiDmDumpEinj (
    505     ACPI_TABLE_HEADER       *Table);
    506 
    507 void
    508 AcpiDmDumpErst (
    509     ACPI_TABLE_HEADER       *Table);
    510 
    511 void
    512 AcpiDmDumpFadt (
    513     ACPI_TABLE_HEADER       *Table);
    514 
    515 void
    516 AcpiDmDumpFpdt (
    517     ACPI_TABLE_HEADER       *Table);
    518 
    519 void
    520 AcpiDmDumpGtdt (
    521     ACPI_TABLE_HEADER       *Table);
    522 
    523 void
    524 AcpiDmDumpHest (
    525     ACPI_TABLE_HEADER       *Table);
    526 
    527 void
    528 AcpiDmDumpIort (
    529     ACPI_TABLE_HEADER       *Table);
    530 
    531 void
    532 AcpiDmDumpIvrs (
    533     ACPI_TABLE_HEADER       *Table);
    534 
    535 void
    536 AcpiDmDumpLpit (
    537     ACPI_TABLE_HEADER       *Table);
    538 
    539 void
    540 AcpiDmDumpMadt (
    541     ACPI_TABLE_HEADER       *Table);
    542 
    543 void
    544 AcpiDmDumpMcfg (
    545     ACPI_TABLE_HEADER       *Table);
    546 
    547 void
    548 AcpiDmDumpMpst (
    549     ACPI_TABLE_HEADER       *Table);
    550 
    551 void
    552 AcpiDmDumpMsct (
    553     ACPI_TABLE_HEADER       *Table);
    554 
    555 void
    556 AcpiDmDumpMtmr (
    557     ACPI_TABLE_HEADER       *Table);
    558 
    559 void
    560 AcpiDmDumpNfit (
    561     ACPI_TABLE_HEADER       *Table);
    562 
    563 void
    564 AcpiDmDumpPcct (
    565     ACPI_TABLE_HEADER       *Table);
    566 
    567 void
    568 AcpiDmDumpPmtt (
    569     ACPI_TABLE_HEADER       *Table);
    570 
    571 UINT32
    572 AcpiDmDumpRsdp (
    573     ACPI_TABLE_HEADER       *Table);
    574 
    575 void
    576 AcpiDmDumpRsdt (
    577     ACPI_TABLE_HEADER       *Table);
    578 
    579 UINT32
    580 AcpiDmDumpS3pt (
    581     ACPI_TABLE_HEADER       *Table);
    582 
    583 void
    584 AcpiDmDumpSlic (
    585     ACPI_TABLE_HEADER       *Table);
    586 
    587 void
    588 AcpiDmDumpSlit (
    589     ACPI_TABLE_HEADER       *Table);
    590 
    591 void
    592 AcpiDmDumpSrat (
    593     ACPI_TABLE_HEADER       *Table);
    594 
    595 void
    596 AcpiDmDumpStao (
    597     ACPI_TABLE_HEADER       *Table);
    598 
    599 void
    600 AcpiDmDumpTcpa (
    601     ACPI_TABLE_HEADER       *Table);
    602 
    603 void
    604 AcpiDmDumpVrtc (
    605     ACPI_TABLE_HEADER       *Table);
    606 
    607 void
    608 AcpiDmDumpWdat (
    609     ACPI_TABLE_HEADER       *Table);
    610 
    611 void
    612 AcpiDmDumpWpbt (
    613     ACPI_TABLE_HEADER       *Table);
    614 
    615 void
    616 AcpiDmDumpXsdt (
    617     ACPI_TABLE_HEADER       *Table);
    618 
    619 
    620 /*
    621  * dmwalk
    622  */
    623 void
    624 AcpiDmDisassemble (
    625     ACPI_WALK_STATE         *WalkState,
    626     ACPI_PARSE_OBJECT       *Origin,
    627     UINT32                  NumOpcodes);
    628 
    629 void
    630 AcpiDmWalkParseTree (
    631     ACPI_PARSE_OBJECT       *Op,
    632     ASL_WALK_CALLBACK       DescendingCallback,
    633     ASL_WALK_CALLBACK       AscendingCallback,
    634     void                    *Context);
    635 
    636 
    637 /*
    638  * dmopcode
    639  */
    640 void
    641 AcpiDmDisassembleOneOp (
    642     ACPI_WALK_STATE         *WalkState,
    643     ACPI_OP_WALK_INFO       *Info,
    644     ACPI_PARSE_OBJECT       *Op);
    645 
    646 UINT32
    647 AcpiDmListType (
    648     ACPI_PARSE_OBJECT       *Op);
    649 
    650 void
    651 AcpiDmMethodFlags (
    652     ACPI_PARSE_OBJECT       *Op);
    653 
    654 void
    655 AcpiDmDisplayTargetPathname (
    656     ACPI_PARSE_OBJECT       *Op);
    657 
    658 void
    659 AcpiDmNotifyDescription (
    660     ACPI_PARSE_OBJECT       *Op);
    661 
    662 void
    663 AcpiDmPredefinedDescription (
    664     ACPI_PARSE_OBJECT       *Op);
    665 
    666 void
    667 AcpiDmFieldPredefinedDescription (
    668     ACPI_PARSE_OBJECT       *Op);
    669 
    670 void
    671 AcpiDmFieldFlags (
    672     ACPI_PARSE_OBJECT       *Op);
    673 
    674 void
    675 AcpiDmAddressSpace (
    676     UINT8                   SpaceId);
    677 
    678 void
    679 AcpiDmRegionFlags (
    680     ACPI_PARSE_OBJECT       *Op);
    681 
    682 void
    683 AcpiDmMatchOp (
    684     ACPI_PARSE_OBJECT       *Op);
    685 
    686 
    687 /*
    688  * dmnames
    689  */
    690 UINT32
    691 AcpiDmDumpName (
    692     UINT32                  Name);
    693 
    694 ACPI_STATUS
    695 AcpiPsDisplayObjectPathname (
    696     ACPI_WALK_STATE         *WalkState,
    697     ACPI_PARSE_OBJECT       *Op);
    698 
    699 void
    700 AcpiDmNamestring (
    701     char                    *Name);
    702 
    703 
    704 /*
    705  * dmbuffer
    706  */
    707 void
    708 AcpiDmDisasmByteList (
    709     UINT32                  Level,
    710     UINT8                   *ByteData,
    711     UINT32                  ByteCount);
    712 
    713 void
    714 AcpiDmByteList (
    715     ACPI_OP_WALK_INFO       *Info,
    716     ACPI_PARSE_OBJECT       *Op);
    717 
    718 void
    719 AcpiDmCheckForHardwareId (
    720     ACPI_PARSE_OBJECT       *Op);
    721 
    722 void
    723 AcpiDmDecompressEisaId (
    724     UINT32                  EncodedId);
    725 
    726 BOOLEAN
    727 AcpiDmIsUuidBuffer (
    728     ACPI_PARSE_OBJECT       *Op);
    729 
    730 BOOLEAN
    731 AcpiDmIsUnicodeBuffer (
    732     ACPI_PARSE_OBJECT       *Op);
    733 
    734 BOOLEAN
    735 AcpiDmIsStringBuffer (
    736     ACPI_PARSE_OBJECT       *Op);
    737 
    738 BOOLEAN
    739 AcpiDmIsPldBuffer (
    740     ACPI_PARSE_OBJECT       *Op);
    741 
    742 
    743 /*
    744  * dmdeferred
    745  */
    746 ACPI_STATUS
    747 AcpiDmParseDeferredOps (
    748     ACPI_PARSE_OBJECT       *Root);
    749 
    750 
    751 /*
    752  * dmextern
    753  */
    754 ACPI_STATUS
    755 AcpiDmAddToExternalFileList (
    756     char                    *PathList);
    757 
    758 void
    759 AcpiDmClearExternalFileList (
    760     void);
    761 
    762 void
    763 AcpiDmAddOpToExternalList (
    764     ACPI_PARSE_OBJECT       *Op,
    765     char                    *Path,
    766     UINT8                   Type,
    767     UINT32                  Value,
    768     UINT16                  Flags);
    769 
    770 void
    771 AcpiDmAddNodeToExternalList (
    772     ACPI_NAMESPACE_NODE     *Node,
    773     UINT8                   Type,
    774     UINT32                  Value,
    775     UINT16                  Flags);
    776 
    777 void
    778 AcpiDmAddExternalsToNamespace (
    779     void);
    780 
    781 UINT32
    782 AcpiDmGetExternalMethodCount (
    783     void);
    784 
    785 void
    786 AcpiDmClearExternalList (
    787     void);
    788 
    789 void
    790 AcpiDmEmitExternals (
    791     void);
    792 
    793 void
    794 AcpiDmUnresolvedWarning (
    795     UINT8                   Type);
    796 
    797 void
    798 AcpiDmGetExternalsFromFile (
    799     void);
    800 
    801 /*
    802  * dmresrc
    803  */
    804 void
    805 AcpiDmDumpInteger8 (
    806     UINT8                   Value,
    807     const char              *Name);
    808 
    809 void
    810 AcpiDmDumpInteger16 (
    811     UINT16                  Value,
    812     const char              *Name);
    813 
    814 void
    815 AcpiDmDumpInteger32 (
    816     UINT32                  Value,
    817     const char              *Name);
    818 
    819 void
    820 AcpiDmDumpInteger64 (
    821     UINT64                  Value,
    822     const char              *Name);
    823 
    824 void
    825 AcpiDmResourceTemplate (
    826     ACPI_OP_WALK_INFO       *Info,
    827     ACPI_PARSE_OBJECT       *Op,
    828     UINT8                   *ByteData,
    829     UINT32                  ByteCount);
    830 
    831 ACPI_STATUS
    832 AcpiDmIsResourceTemplate (
    833     ACPI_WALK_STATE         *WalkState,
    834     ACPI_PARSE_OBJECT       *Op);
    835 
    836 void
    837 AcpiDmBitList (
    838     UINT16                  Mask);
    839 
    840 void
    841 AcpiDmDescriptorName (
    842     void);
    843 
    844 
    845 /*
    846  * dmresrcl
    847  */
    848 void
    849 AcpiDmWordDescriptor (
    850     ACPI_OP_WALK_INFO       *Info,
    851     AML_RESOURCE            *Resource,
    852     UINT32                  Length,
    853     UINT32                  Level);
    854 
    855 void
    856 AcpiDmDwordDescriptor (
    857     ACPI_OP_WALK_INFO       *Info,
    858     AML_RESOURCE            *Resource,
    859     UINT32                  Length,
    860     UINT32                  Level);
    861 
    862 void
    863 AcpiDmExtendedDescriptor (
    864     ACPI_OP_WALK_INFO       *Info,
    865     AML_RESOURCE            *Resource,
    866     UINT32                  Length,
    867     UINT32                  Level);
    868 
    869 void
    870 AcpiDmQwordDescriptor (
    871     ACPI_OP_WALK_INFO       *Info,
    872     AML_RESOURCE            *Resource,
    873     UINT32                  Length,
    874     UINT32                  Level);
    875 
    876 void
    877 AcpiDmMemory24Descriptor (
    878     ACPI_OP_WALK_INFO       *Info,
    879     AML_RESOURCE            *Resource,
    880     UINT32                  Length,
    881     UINT32                  Level);
    882 
    883 void
    884 AcpiDmMemory32Descriptor (
    885     ACPI_OP_WALK_INFO       *Info,
    886     AML_RESOURCE            *Resource,
    887     UINT32                  Length,
    888     UINT32                  Level);
    889 
    890 void
    891 AcpiDmFixedMemory32Descriptor (
    892     ACPI_OP_WALK_INFO       *Info,
    893     AML_RESOURCE            *Resource,
    894     UINT32                  Length,
    895     UINT32                  Level);
    896 
    897 void
    898 AcpiDmGenericRegisterDescriptor (
    899     ACPI_OP_WALK_INFO       *Info,
    900     AML_RESOURCE            *Resource,
    901     UINT32                  Length,
    902     UINT32                  Level);
    903 
    904 void
    905 AcpiDmInterruptDescriptor (
    906     ACPI_OP_WALK_INFO       *Info,
    907     AML_RESOURCE            *Resource,
    908     UINT32                  Length,
    909     UINT32                  Level);
    910 
    911 void
    912 AcpiDmVendorLargeDescriptor (
    913     ACPI_OP_WALK_INFO       *Info,
    914     AML_RESOURCE            *Resource,
    915     UINT32                  Length,
    916     UINT32                  Level);
    917 
    918 void
    919 AcpiDmGpioDescriptor (
    920     ACPI_OP_WALK_INFO       *Info,
    921     AML_RESOURCE            *Resource,
    922     UINT32                  Length,
    923     UINT32                  Level);
    924 
    925 void
    926 AcpiDmSerialBusDescriptor (
    927     ACPI_OP_WALK_INFO       *Info,
    928     AML_RESOURCE            *Resource,
    929     UINT32                  Length,
    930     UINT32                  Level);
    931 
    932 void
    933 AcpiDmVendorCommon (
    934     const char              *Name,
    935     UINT8                   *ByteData,
    936     UINT32                  Length,
    937     UINT32                  Level);
    938 
    939 
    940 /*
    941  * dmresrcs
    942  */
    943 void
    944 AcpiDmIrqDescriptor (
    945     ACPI_OP_WALK_INFO       *Info,
    946     AML_RESOURCE            *Resource,
    947     UINT32                  Length,
    948     UINT32                  Level);
    949 
    950 void
    951 AcpiDmDmaDescriptor (
    952     ACPI_OP_WALK_INFO       *Info,
    953     AML_RESOURCE            *Resource,
    954     UINT32                  Length,
    955     UINT32                  Level);
    956 
    957 void
    958 AcpiDmFixedDmaDescriptor (
    959     ACPI_OP_WALK_INFO       *Info,
    960     AML_RESOURCE            *Resource,
    961     UINT32                  Length,
    962     UINT32                  Level);
    963 
    964 void
    965 AcpiDmIoDescriptor (
    966     ACPI_OP_WALK_INFO       *Info,
    967     AML_RESOURCE            *Resource,
    968     UINT32                  Length,
    969     UINT32                  Level);
    970 
    971 void
    972 AcpiDmFixedIoDescriptor (
    973     ACPI_OP_WALK_INFO       *Info,
    974     AML_RESOURCE            *Resource,
    975     UINT32                  Length,
    976     UINT32                  Level);
    977 
    978 void
    979 AcpiDmStartDependentDescriptor (
    980     ACPI_OP_WALK_INFO       *Info,
    981     AML_RESOURCE            *Resource,
    982     UINT32                  Length,
    983     UINT32                  Level);
    984 
    985 void
    986 AcpiDmEndDependentDescriptor (
    987     ACPI_OP_WALK_INFO       *Info,
    988     AML_RESOURCE            *Resource,
    989     UINT32                  Length,
    990     UINT32                  Level);
    991 
    992 void
    993 AcpiDmVendorSmallDescriptor (
    994     ACPI_OP_WALK_INFO       *Info,
    995     AML_RESOURCE            *Resource,
    996     UINT32                  Length,
    997     UINT32                  Level);
    998 
    999 
   1000 /*
   1001  * dmutils
   1002  */
   1003 void
   1004 AcpiDmDecodeAttribute (
   1005     UINT8                   Attribute);
   1006 
   1007 void
   1008 AcpiDmIndent (
   1009     UINT32                  Level);
   1010 
   1011 BOOLEAN
   1012 AcpiDmCommaIfListMember (
   1013     ACPI_PARSE_OBJECT       *Op);
   1014 
   1015 void
   1016 AcpiDmCommaIfFieldMember (
   1017     ACPI_PARSE_OBJECT       *Op);
   1018 
   1019 
   1020 /*
   1021  * dmrestag
   1022  */
   1023 void
   1024 AcpiDmFindResources (
   1025     ACPI_PARSE_OBJECT       *Root);
   1026 
   1027 void
   1028 AcpiDmCheckResourceReference (
   1029     ACPI_PARSE_OBJECT       *Op,
   1030     ACPI_WALK_STATE         *WalkState);
   1031 
   1032 
   1033 /*
   1034  * dmcstyle
   1035  */
   1036 BOOLEAN
   1037 AcpiDmCheckForSymbolicOpcode (
   1038     ACPI_PARSE_OBJECT       *Op,
   1039     ACPI_OP_WALK_INFO       *Info);
   1040 
   1041 void
   1042 AcpiDmCloseOperator (
   1043     ACPI_PARSE_OBJECT       *Op);
   1044 
   1045 
   1046 /*
   1047  * acdisasm
   1048  */
   1049 void
   1050 AdDisassemblerHeader (
   1051     char                    *Filename,
   1052     UINT8                   TableType);
   1053 
   1054 #define ACPI_IS_AML_TABLE   0
   1055 #define ACPI_IS_DATA_TABLE  1
   1056 
   1057 #endif  /* __ACDISASM_H__ */
   1058