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