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