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