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