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