Home | History | Annotate | Line # | Download | only in include
acdisasm.h revision 1.10
      1 /******************************************************************************
      2  *
      3  * Name: acdisasm.h - AML disassembler
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2016, 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     ACPI_WALK_STATE         *WalkState;
    190     ACPI_PARSE_OBJECT       *MappingOp;
    191     UINT8                   *PreviousAml;
    192     UINT8                   *StartAml;
    193     UINT32                  Level;
    194     UINT32                  LastLevel;
    195     UINT32                  Count;
    196     UINT32                  BitOffset;
    197     UINT32                  Flags;
    198     UINT32                  AmlOffset;
    199 
    200 } ACPI_OP_WALK_INFO;
    201 
    202 /*
    203  * TBD - another copy of this is in asltypes.h, fix
    204  */
    205 #ifndef ASL_WALK_CALLBACK_DEFINED
    206 typedef
    207 ACPI_STATUS (*ASL_WALK_CALLBACK) (
    208     ACPI_PARSE_OBJECT           *Op,
    209     UINT32                      Level,
    210     void                        *Context);
    211 #define ASL_WALK_CALLBACK_DEFINED
    212 #endif
    213 
    214 typedef
    215 void (*ACPI_RESOURCE_HANDLER) (
    216     ACPI_OP_WALK_INFO       *Info,
    217     AML_RESOURCE            *Resource,
    218     UINT32                  Length,
    219     UINT32                  Level);
    220 
    221 typedef struct acpi_resource_tag
    222 {
    223     UINT32                  BitIndex;
    224     char                    *Tag;
    225 
    226 } ACPI_RESOURCE_TAG;
    227 
    228 /* Strings used for decoding flags to ASL keywords */
    229 
    230 extern const char               *AcpiGbl_WordDecode[];
    231 extern const char               *AcpiGbl_IrqDecode[];
    232 extern const char               *AcpiGbl_LockRule[];
    233 extern const char               *AcpiGbl_AccessTypes[];
    234 extern const char               *AcpiGbl_UpdateRules[];
    235 extern const char               *AcpiGbl_MatchOps[];
    236 
    237 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf0[];
    238 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1[];
    239 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1a[];
    240 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2[];
    241 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2a[];
    242 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf3[];
    243 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf4[];
    244 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsfHdr[];
    245 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
    246 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
    247 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
    248 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep[];
    249 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep0[];
    250 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt0[];
    251 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt1[];
    252 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2[];
    253 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2a[];
    254 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2[];
    255 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Device[];
    256 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Addr[];
    257 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Size[];
    258 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Name[];
    259 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2OemData[];
    260 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbgp[];
    261 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar[];
    262 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarHdr[];
    263 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarScope[];
    264 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar0[];
    265 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
    266 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
    267 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
    268 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar4[];
    269 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
    270 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0[];
    271 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0a[];
    272 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm1[];
    273 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm1a[];
    274 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm2[];
    275 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
    276 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
    277 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
    278 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
    279 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
    280 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
    281 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
    282 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
    283 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
    284 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
    285 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt6[];
    286 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
    287 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdtHdr[];
    288 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt0[];
    289 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
    290 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
    291 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
    292 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
    293 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
    294 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
    295 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
    296 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHeader[];
    297 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest[];
    298 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest0[];
    299 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest1[];
    300 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest2[];
    301 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest6[];
    302 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest7[];
    303 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest8[];
    304 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest9[];
    305 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest10[];
    306 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestNotify[];
    307 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestBank[];
    308 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHpet[];
    309 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpitHdr[];
    310 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit0[];
    311 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit1[];
    312 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort[];
    313 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort0[];
    314 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort0a[];
    315 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort1[];
    316 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort1a[];
    317 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort2[];
    318 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3[];
    319 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3a[];
    320 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3b[];
    321 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3c[];
    322 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort4[];
    323 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortAcc[];
    324 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortHdr[];
    325 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortMap[];
    326 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortPad[];
    327 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs[];
    328 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs0[];
    329 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs1[];
    330 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs4[];
    331 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8a[];
    332 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8b[];
    333 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8c[];
    334 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrsHdr[];
    335 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt[];
    336 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt0[];
    337 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt1[];
    338 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt2[];
    339 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt3[];
    340 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt4[];
    341 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt5[];
    342 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt6[];
    343 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt7[];
    344 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
    345 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
    346 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
    347 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
    348 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
    349 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt13[];
    350 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14[];
    351 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt15[];
    352 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
    353 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
    354 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
    355 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
    356 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
    357 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
    358 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
    359 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
    360 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
    361 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
    362 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
    363 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
    364 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr[];
    365 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr0[];
    366 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit[];
    367 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfitHdr[];
    368 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit0[];
    369 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit1[];
    370 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit2[];
    371 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit2a[];
    372 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit3[];
    373 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit3a[];
    374 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit4[];
    375 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit5[];
    376 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6[];
    377 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6a[];
    378 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt[];
    379 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt0[];
    380 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1[];
    381 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1a[];
    382 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt2[];
    383 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmttHdr[];
    384 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct[];
    385 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcctHdr[];
    386 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
    387 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct1[];
    388 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct2[];
    389 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
    390 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
    391 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
    392 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3ptHdr[];
    393 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt0[];
    394 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt1[];
    395 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSbst[];
    396 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic[];
    397 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlit[];
    398 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpcr[];
    399 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpmi[];
    400 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat[];
    401 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSratHdr[];
    402 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat0[];
    403 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
    404 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
    405 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
    406 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
    407 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
    408 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaHdr[];
    409 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaClient[];
    410 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaServer[];
    411 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTpm2[];
    412 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoUefi[];
    413 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc[];
    414 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc0[];
    415 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWaet[];
    416 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat[];
    417 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat0[];
    418 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWddt[];
    419 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdrt[];
    420 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWpbt[];
    421 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWpbt0[];
    422 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoXenv[];
    423 
    424 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
    425 
    426 /*
    427  * dmtable and ahtable
    428  */
    429 extern const ACPI_DMTABLE_DATA  AcpiDmTableData[];
    430 extern const AH_TABLE           AcpiSupportedTables[];
    431 
    432 UINT8
    433 AcpiDmGenerateChecksum (
    434     void                    *Table,
    435     UINT32                  Length,
    436     UINT8                   OriginalChecksum);
    437 
    438 const ACPI_DMTABLE_DATA *
    439 AcpiDmGetTableData (
    440     char                    *Signature);
    441 
    442 void
    443 AcpiDmDumpDataTable (
    444     ACPI_TABLE_HEADER       *Table);
    445 
    446 ACPI_STATUS
    447 AcpiDmDumpTable (
    448     UINT32                  TableLength,
    449     UINT32                  TableOffset,
    450     void                    *Table,
    451     UINT32                  SubTableLength,
    452     ACPI_DMTABLE_INFO        *Info);
    453 
    454 void
    455 AcpiDmLineHeader (
    456     UINT32                  Offset,
    457     UINT32                  ByteLength,
    458     char                    *Name);
    459 
    460 void
    461 AcpiDmLineHeader2 (
    462     UINT32                  Offset,
    463     UINT32                  ByteLength,
    464     char                    *Name,
    465     UINT32                  Value);
    466 
    467 
    468 /*
    469  * dmtbdump
    470  */
    471 void
    472 AcpiDmDumpBuffer (
    473     void                    *Table,
    474     UINT32                  BufferOffset,
    475     UINT32                  Length,
    476     UINT32                  AbsoluteOffset,
    477     char                    *Header);
    478 
    479 void
    480 AcpiDmDumpUnicode (
    481     void                    *Table,
    482     UINT32                  BufferOffset,
    483     UINT32                  ByteLength);
    484 
    485 void
    486 AcpiDmDumpAsf (
    487     ACPI_TABLE_HEADER       *Table);
    488 
    489 void
    490 AcpiDmDumpCpep (
    491     ACPI_TABLE_HEADER       *Table);
    492 
    493 void
    494 AcpiDmDumpCsrt (
    495     ACPI_TABLE_HEADER       *Table);
    496 
    497 void
    498 AcpiDmDumpDbg2 (
    499     ACPI_TABLE_HEADER       *Table);
    500 
    501 void
    502 AcpiDmDumpDmar (
    503     ACPI_TABLE_HEADER       *Table);
    504 
    505 void
    506 AcpiDmDumpDrtm (
    507     ACPI_TABLE_HEADER       *Table);
    508 
    509 void
    510 AcpiDmDumpEinj (
    511     ACPI_TABLE_HEADER       *Table);
    512 
    513 void
    514 AcpiDmDumpErst (
    515     ACPI_TABLE_HEADER       *Table);
    516 
    517 void
    518 AcpiDmDumpFadt (
    519     ACPI_TABLE_HEADER       *Table);
    520 
    521 void
    522 AcpiDmDumpFpdt (
    523     ACPI_TABLE_HEADER       *Table);
    524 
    525 void
    526 AcpiDmDumpGtdt (
    527     ACPI_TABLE_HEADER       *Table);
    528 
    529 void
    530 AcpiDmDumpHest (
    531     ACPI_TABLE_HEADER       *Table);
    532 
    533 void
    534 AcpiDmDumpIort (
    535     ACPI_TABLE_HEADER       *Table);
    536 
    537 void
    538 AcpiDmDumpIvrs (
    539     ACPI_TABLE_HEADER       *Table);
    540 
    541 void
    542 AcpiDmDumpLpit (
    543     ACPI_TABLE_HEADER       *Table);
    544 
    545 void
    546 AcpiDmDumpMadt (
    547     ACPI_TABLE_HEADER       *Table);
    548 
    549 void
    550 AcpiDmDumpMcfg (
    551     ACPI_TABLE_HEADER       *Table);
    552 
    553 void
    554 AcpiDmDumpMpst (
    555     ACPI_TABLE_HEADER       *Table);
    556 
    557 void
    558 AcpiDmDumpMsct (
    559     ACPI_TABLE_HEADER       *Table);
    560 
    561 void
    562 AcpiDmDumpMtmr (
    563     ACPI_TABLE_HEADER       *Table);
    564 
    565 void
    566 AcpiDmDumpNfit (
    567     ACPI_TABLE_HEADER       *Table);
    568 
    569 void
    570 AcpiDmDumpPcct (
    571     ACPI_TABLE_HEADER       *Table);
    572 
    573 void
    574 AcpiDmDumpPmtt (
    575     ACPI_TABLE_HEADER       *Table);
    576 
    577 UINT32
    578 AcpiDmDumpRsdp (
    579     ACPI_TABLE_HEADER       *Table);
    580 
    581 void
    582 AcpiDmDumpRsdt (
    583     ACPI_TABLE_HEADER       *Table);
    584 
    585 UINT32
    586 AcpiDmDumpS3pt (
    587     ACPI_TABLE_HEADER       *Table);
    588 
    589 void
    590 AcpiDmDumpSlic (
    591     ACPI_TABLE_HEADER       *Table);
    592 
    593 void
    594 AcpiDmDumpSlit (
    595     ACPI_TABLE_HEADER       *Table);
    596 
    597 void
    598 AcpiDmDumpSrat (
    599     ACPI_TABLE_HEADER       *Table);
    600 
    601 void
    602 AcpiDmDumpStao (
    603     ACPI_TABLE_HEADER       *Table);
    604 
    605 void
    606 AcpiDmDumpTcpa (
    607     ACPI_TABLE_HEADER       *Table);
    608 
    609 void
    610 AcpiDmDumpVrtc (
    611     ACPI_TABLE_HEADER       *Table);
    612 
    613 void
    614 AcpiDmDumpWdat (
    615     ACPI_TABLE_HEADER       *Table);
    616 
    617 void
    618 AcpiDmDumpWpbt (
    619     ACPI_TABLE_HEADER       *Table);
    620 
    621 void
    622 AcpiDmDumpXsdt (
    623     ACPI_TABLE_HEADER       *Table);
    624 
    625 
    626 /*
    627  * dmwalk
    628  */
    629 void
    630 AcpiDmDisassemble (
    631     ACPI_WALK_STATE         *WalkState,
    632     ACPI_PARSE_OBJECT       *Origin,
    633     UINT32                  NumOpcodes);
    634 
    635 void
    636 AcpiDmWalkParseTree (
    637     ACPI_PARSE_OBJECT       *Op,
    638     ASL_WALK_CALLBACK       DescendingCallback,
    639     ASL_WALK_CALLBACK       AscendingCallback,
    640     void                    *Context);
    641 
    642 
    643 /*
    644  * dmopcode
    645  */
    646 void
    647 AcpiDmDisassembleOneOp (
    648     ACPI_WALK_STATE         *WalkState,
    649     ACPI_OP_WALK_INFO       *Info,
    650     ACPI_PARSE_OBJECT       *Op);
    651 
    652 UINT32
    653 AcpiDmListType (
    654     ACPI_PARSE_OBJECT       *Op);
    655 
    656 void
    657 AcpiDmMethodFlags (
    658     ACPI_PARSE_OBJECT       *Op);
    659 
    660 void
    661 AcpiDmDisplayTargetPathname (
    662     ACPI_PARSE_OBJECT       *Op);
    663 
    664 void
    665 AcpiDmNotifyDescription (
    666     ACPI_PARSE_OBJECT       *Op);
    667 
    668 void
    669 AcpiDmPredefinedDescription (
    670     ACPI_PARSE_OBJECT       *Op);
    671 
    672 void
    673 AcpiDmFieldPredefinedDescription (
    674     ACPI_PARSE_OBJECT       *Op);
    675 
    676 void
    677 AcpiDmFieldFlags (
    678     ACPI_PARSE_OBJECT       *Op);
    679 
    680 void
    681 AcpiDmAddressSpace (
    682     UINT8                   SpaceId);
    683 
    684 void
    685 AcpiDmRegionFlags (
    686     ACPI_PARSE_OBJECT       *Op);
    687 
    688 void
    689 AcpiDmMatchOp (
    690     ACPI_PARSE_OBJECT       *Op);
    691 
    692 
    693 /*
    694  * dmnames
    695  */
    696 UINT32
    697 AcpiDmDumpName (
    698     UINT32                  Name);
    699 
    700 ACPI_STATUS
    701 AcpiPsDisplayObjectPathname (
    702     ACPI_WALK_STATE         *WalkState,
    703     ACPI_PARSE_OBJECT       *Op);
    704 
    705 void
    706 AcpiDmNamestring (
    707     char                    *Name);
    708 
    709 
    710 /*
    711  * dmbuffer
    712  */
    713 void
    714 AcpiDmDisasmByteList (
    715     UINT32                  Level,
    716     UINT8                   *ByteData,
    717     UINT32                  ByteCount);
    718 
    719 void
    720 AcpiDmByteList (
    721     ACPI_OP_WALK_INFO       *Info,
    722     ACPI_PARSE_OBJECT       *Op);
    723 
    724 void
    725 AcpiDmCheckForHardwareId (
    726     ACPI_PARSE_OBJECT       *Op);
    727 
    728 void
    729 AcpiDmDecompressEisaId (
    730     UINT32                  EncodedId);
    731 
    732 BOOLEAN
    733 AcpiDmIsUuidBuffer (
    734     ACPI_PARSE_OBJECT       *Op);
    735 
    736 BOOLEAN
    737 AcpiDmIsUnicodeBuffer (
    738     ACPI_PARSE_OBJECT       *Op);
    739 
    740 BOOLEAN
    741 AcpiDmIsStringBuffer (
    742     ACPI_PARSE_OBJECT       *Op);
    743 
    744 BOOLEAN
    745 AcpiDmIsPldBuffer (
    746     ACPI_PARSE_OBJECT       *Op);
    747 
    748 
    749 /*
    750  * dmdeferred
    751  */
    752 ACPI_STATUS
    753 AcpiDmParseDeferredOps (
    754     ACPI_PARSE_OBJECT       *Root);
    755 
    756 
    757 /*
    758  * dmextern
    759  */
    760 ACPI_STATUS
    761 AcpiDmAddToExternalFileList (
    762     char                    *PathList);
    763 
    764 void
    765 AcpiDmClearExternalFileList (
    766     void);
    767 
    768 void
    769 AcpiDmAddOpToExternalList (
    770     ACPI_PARSE_OBJECT       *Op,
    771     char                    *Path,
    772     UINT8                   Type,
    773     UINT32                  Value,
    774     UINT16                  Flags);
    775 
    776 void
    777 AcpiDmAddNodeToExternalList (
    778     ACPI_NAMESPACE_NODE     *Node,
    779     UINT8                   Type,
    780     UINT32                  Value,
    781     UINT16                  Flags);
    782 
    783 void
    784 AcpiDmAddExternalsToNamespace (
    785     void);
    786 
    787 UINT32
    788 AcpiDmGetExternalMethodCount (
    789     void);
    790 
    791 void
    792 AcpiDmClearExternalList (
    793     void);
    794 
    795 void
    796 AcpiDmEmitExternals (
    797     void);
    798 
    799 void
    800 AcpiDmUnresolvedWarning (
    801     UINT8                   Type);
    802 
    803 void
    804 AcpiDmGetExternalsFromFile (
    805     void);
    806 
    807 /*
    808  * dmresrc
    809  */
    810 void
    811 AcpiDmDumpInteger8 (
    812     UINT8                   Value,
    813     const char              *Name);
    814 
    815 void
    816 AcpiDmDumpInteger16 (
    817     UINT16                  Value,
    818     const char              *Name);
    819 
    820 void
    821 AcpiDmDumpInteger32 (
    822     UINT32                  Value,
    823     const char              *Name);
    824 
    825 void
    826 AcpiDmDumpInteger64 (
    827     UINT64                  Value,
    828     const char              *Name);
    829 
    830 void
    831 AcpiDmResourceTemplate (
    832     ACPI_OP_WALK_INFO       *Info,
    833     ACPI_PARSE_OBJECT       *Op,
    834     UINT8                   *ByteData,
    835     UINT32                  ByteCount);
    836 
    837 ACPI_STATUS
    838 AcpiDmIsResourceTemplate (
    839     ACPI_WALK_STATE         *WalkState,
    840     ACPI_PARSE_OBJECT       *Op);
    841 
    842 void
    843 AcpiDmBitList (
    844     UINT16                  Mask);
    845 
    846 void
    847 AcpiDmDescriptorName (
    848     void);
    849 
    850 
    851 /*
    852  * dmresrcl
    853  */
    854 void
    855 AcpiDmWordDescriptor (
    856     ACPI_OP_WALK_INFO       *Info,
    857     AML_RESOURCE            *Resource,
    858     UINT32                  Length,
    859     UINT32                  Level);
    860 
    861 void
    862 AcpiDmDwordDescriptor (
    863     ACPI_OP_WALK_INFO       *Info,
    864     AML_RESOURCE            *Resource,
    865     UINT32                  Length,
    866     UINT32                  Level);
    867 
    868 void
    869 AcpiDmExtendedDescriptor (
    870     ACPI_OP_WALK_INFO       *Info,
    871     AML_RESOURCE            *Resource,
    872     UINT32                  Length,
    873     UINT32                  Level);
    874 
    875 void
    876 AcpiDmQwordDescriptor (
    877     ACPI_OP_WALK_INFO       *Info,
    878     AML_RESOURCE            *Resource,
    879     UINT32                  Length,
    880     UINT32                  Level);
    881 
    882 void
    883 AcpiDmMemory24Descriptor (
    884     ACPI_OP_WALK_INFO       *Info,
    885     AML_RESOURCE            *Resource,
    886     UINT32                  Length,
    887     UINT32                  Level);
    888 
    889 void
    890 AcpiDmMemory32Descriptor (
    891     ACPI_OP_WALK_INFO       *Info,
    892     AML_RESOURCE            *Resource,
    893     UINT32                  Length,
    894     UINT32                  Level);
    895 
    896 void
    897 AcpiDmFixedMemory32Descriptor (
    898     ACPI_OP_WALK_INFO       *Info,
    899     AML_RESOURCE            *Resource,
    900     UINT32                  Length,
    901     UINT32                  Level);
    902 
    903 void
    904 AcpiDmGenericRegisterDescriptor (
    905     ACPI_OP_WALK_INFO       *Info,
    906     AML_RESOURCE            *Resource,
    907     UINT32                  Length,
    908     UINT32                  Level);
    909 
    910 void
    911 AcpiDmInterruptDescriptor (
    912     ACPI_OP_WALK_INFO       *Info,
    913     AML_RESOURCE            *Resource,
    914     UINT32                  Length,
    915     UINT32                  Level);
    916 
    917 void
    918 AcpiDmVendorLargeDescriptor (
    919     ACPI_OP_WALK_INFO       *Info,
    920     AML_RESOURCE            *Resource,
    921     UINT32                  Length,
    922     UINT32                  Level);
    923 
    924 void
    925 AcpiDmGpioDescriptor (
    926     ACPI_OP_WALK_INFO       *Info,
    927     AML_RESOURCE            *Resource,
    928     UINT32                  Length,
    929     UINT32                  Level);
    930 
    931 void
    932 AcpiDmSerialBusDescriptor (
    933     ACPI_OP_WALK_INFO       *Info,
    934     AML_RESOURCE            *Resource,
    935     UINT32                  Length,
    936     UINT32                  Level);
    937 
    938 void
    939 AcpiDmVendorCommon (
    940     const char              *Name,
    941     UINT8                   *ByteData,
    942     UINT32                  Length,
    943     UINT32                  Level);
    944 
    945 
    946 /*
    947  * dmresrcs
    948  */
    949 void
    950 AcpiDmIrqDescriptor (
    951     ACPI_OP_WALK_INFO       *Info,
    952     AML_RESOURCE            *Resource,
    953     UINT32                  Length,
    954     UINT32                  Level);
    955 
    956 void
    957 AcpiDmDmaDescriptor (
    958     ACPI_OP_WALK_INFO       *Info,
    959     AML_RESOURCE            *Resource,
    960     UINT32                  Length,
    961     UINT32                  Level);
    962 
    963 void
    964 AcpiDmFixedDmaDescriptor (
    965     ACPI_OP_WALK_INFO       *Info,
    966     AML_RESOURCE            *Resource,
    967     UINT32                  Length,
    968     UINT32                  Level);
    969 
    970 void
    971 AcpiDmIoDescriptor (
    972     ACPI_OP_WALK_INFO       *Info,
    973     AML_RESOURCE            *Resource,
    974     UINT32                  Length,
    975     UINT32                  Level);
    976 
    977 void
    978 AcpiDmFixedIoDescriptor (
    979     ACPI_OP_WALK_INFO       *Info,
    980     AML_RESOURCE            *Resource,
    981     UINT32                  Length,
    982     UINT32                  Level);
    983 
    984 void
    985 AcpiDmStartDependentDescriptor (
    986     ACPI_OP_WALK_INFO       *Info,
    987     AML_RESOURCE            *Resource,
    988     UINT32                  Length,
    989     UINT32                  Level);
    990 
    991 void
    992 AcpiDmEndDependentDescriptor (
    993     ACPI_OP_WALK_INFO       *Info,
    994     AML_RESOURCE            *Resource,
    995     UINT32                  Length,
    996     UINT32                  Level);
    997 
    998 void
    999 AcpiDmVendorSmallDescriptor (
   1000     ACPI_OP_WALK_INFO       *Info,
   1001     AML_RESOURCE            *Resource,
   1002     UINT32                  Length,
   1003     UINT32                  Level);
   1004 
   1005 
   1006 /*
   1007  * dmutils
   1008  */
   1009 void
   1010 AcpiDmDecodeAttribute (
   1011     UINT8                   Attribute);
   1012 
   1013 void
   1014 AcpiDmIndent (
   1015     UINT32                  Level);
   1016 
   1017 BOOLEAN
   1018 AcpiDmCommaIfListMember (
   1019     ACPI_PARSE_OBJECT       *Op);
   1020 
   1021 void
   1022 AcpiDmCommaIfFieldMember (
   1023     ACPI_PARSE_OBJECT       *Op);
   1024 
   1025 
   1026 /*
   1027  * dmrestag
   1028  */
   1029 void
   1030 AcpiDmFindResources (
   1031     ACPI_PARSE_OBJECT       *Root);
   1032 
   1033 void
   1034 AcpiDmCheckResourceReference (
   1035     ACPI_PARSE_OBJECT       *Op,
   1036     ACPI_WALK_STATE         *WalkState);
   1037 
   1038 
   1039 /*
   1040  * dmcstyle
   1041  */
   1042 BOOLEAN
   1043 AcpiDmCheckForSymbolicOpcode (
   1044     ACPI_PARSE_OBJECT       *Op,
   1045     ACPI_OP_WALK_INFO       *Info);
   1046 
   1047 void
   1048 AcpiDmCloseOperator (
   1049     ACPI_PARSE_OBJECT       *Op);
   1050 
   1051 
   1052 /*
   1053  * dmtables
   1054  */
   1055 void
   1056 AdDisassemblerHeader (
   1057     char                    *Filename,
   1058     UINT8                   TableType);
   1059 
   1060 #define ACPI_IS_AML_TABLE   0
   1061 #define ACPI_IS_DATA_TABLE  1
   1062 
   1063 
   1064 /*
   1065  * adisasm
   1066  */
   1067 ACPI_STATUS
   1068 AdAmlDisassemble (
   1069     BOOLEAN                 OutToFile,
   1070     char                    *Filename,
   1071     char                    *Prefix,
   1072     char                    **OutFilename);
   1073 
   1074 ACPI_STATUS
   1075 AdGetLocalTables (
   1076     void);
   1077 
   1078 ACPI_STATUS
   1079 AdParseTable (
   1080     ACPI_TABLE_HEADER       *Table,
   1081     ACPI_OWNER_ID           *OwnerId,
   1082     BOOLEAN                 LoadTable,
   1083     BOOLEAN                 External);
   1084 
   1085 ACPI_STATUS
   1086 AdDisplayTables (
   1087     char                    *Filename,
   1088     ACPI_TABLE_HEADER       *Table);
   1089 
   1090 ACPI_STATUS
   1091 AdDisplayStatistics (
   1092     void);
   1093 
   1094 #endif  /* __ACDISASM_H__ */
   1095