1 /****************************************************************************** 2 * 3 * Module Name: aslcompiler.h - common include file for iASL 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2012, 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 45 #ifndef __ASLCOMPILER_H 46 #define __ASLCOMPILER_H 47 48 #include <contrib/dev/acpica/include/acpi.h> 49 #include <contrib/dev/acpica/include/accommon.h> 50 #include <contrib/dev/acpica/include/amlresrc.h> 51 #include <contrib/dev/acpica/include/acdebug.h> 52 53 /* Microsoft-specific */ 54 55 #if (defined WIN32 || defined WIN64) 56 57 /* warn : used #pragma pack */ 58 #pragma warning(disable:4103) 59 60 /* warn : named type definition in parentheses */ 61 #pragma warning(disable:4115) 62 #endif 63 64 #include <stdio.h> 65 #include <stdlib.h> 66 #include <stdarg.h> 67 #include <string.h> 68 #include <errno.h> 69 #include <ctype.h> 70 71 /* Compiler headers */ 72 73 #include <contrib/dev/acpica/compiler/asldefine.h> 74 #include <contrib/dev/acpica/compiler/asltypes.h> 75 #include <contrib/dev/acpica/compiler/aslmessages.h> 76 #include <contrib/dev/acpica/compiler/aslglobal.h> 77 #include <contrib/dev/acpica/compiler/preprocess.h> 78 79 80 /******************************************************************************* 81 * 82 * Compiler prototypes 83 * 84 ******************************************************************************/ 85 86 /* 87 * Main ASL parser - generated from flex/bison, lex/yacc, etc. 88 */ 89 int 90 AslCompilerparse( 91 void); 92 93 ACPI_PARSE_OBJECT * 94 AslDoError ( 95 void); 96 97 int 98 AslCompilerlex( 99 void); 100 101 void 102 AslResetCurrentLineBuffer ( 103 void); 104 105 void 106 AslInsertLineBuffer ( 107 int SourceChar); 108 109 int 110 AslPopInputFileStack ( 111 void); 112 113 void 114 AslPushInputFileStack ( 115 FILE *InputFile, 116 char *Filename); 117 118 /* 119 * aslstartup - entered from main() 120 */ 121 void 122 AslInitializeGlobals ( 123 void); 124 125 typedef 126 ACPI_STATUS (*ASL_PATHNAME_CALLBACK) ( 127 char *); 128 129 ACPI_STATUS 130 AslDoOnePathname ( 131 char *Pathname, 132 ASL_PATHNAME_CALLBACK Callback); 133 134 ACPI_STATUS 135 AslDoOneFile ( 136 char *Filename); 137 138 ACPI_STATUS 139 AslCheckForErrorExit ( 140 void); 141 142 143 /* 144 * aslcompile - compile mainline 145 */ 146 void 147 AslCompilerSignon ( 148 UINT32 FileId); 149 150 void 151 AslCompilerFileHeader ( 152 UINT32 FileId); 153 154 int 155 CmDoCompile ( 156 void); 157 158 void 159 CmDoOutputFiles ( 160 void); 161 162 void 163 CmCleanupAndExit ( 164 void); 165 166 ACPI_STATUS 167 FlCheckForAscii ( 168 FILE *Handle, 169 char *Filename, 170 BOOLEAN DisplayErrors); 171 172 173 /* 174 * aslwalks - semantic analysis and parse tree walks 175 */ 176 ACPI_STATUS 177 AnOtherSemanticAnalysisWalkBegin ( 178 ACPI_PARSE_OBJECT *Op, 179 UINT32 Level, 180 void *Context); 181 182 ACPI_STATUS 183 AnOtherSemanticAnalysisWalkEnd ( 184 ACPI_PARSE_OBJECT *Op, 185 UINT32 Level, 186 void *Context); 187 188 ACPI_STATUS 189 AnOperandTypecheckWalkEnd ( 190 ACPI_PARSE_OBJECT *Op, 191 UINT32 Level, 192 void *Context); 193 194 ACPI_STATUS 195 AnMethodAnalysisWalkBegin ( 196 ACPI_PARSE_OBJECT *Op, 197 UINT32 Level, 198 void *Context); 199 200 ACPI_STATUS 201 AnMethodAnalysisWalkEnd ( 202 ACPI_PARSE_OBJECT *Op, 203 UINT32 Level, 204 void *Context); 205 206 ACPI_STATUS 207 AnMethodTypingWalkEnd ( 208 ACPI_PARSE_OBJECT *Op, 209 UINT32 Level, 210 void *Context); 211 212 213 /* 214 * aslbtypes - bitfield data types 215 */ 216 UINT32 217 AnMapObjTypeToBtype ( 218 ACPI_PARSE_OBJECT *Op); 219 220 UINT32 221 AnMapArgTypeToBtype ( 222 UINT32 ArgType); 223 224 UINT32 225 AnGetBtype ( 226 ACPI_PARSE_OBJECT *Op); 227 228 void 229 AnFormatBtype ( 230 char *Buffer, 231 UINT32 Btype); 232 233 234 /* 235 * aslanalyze - Support functions for parse tree walks 236 */ 237 void 238 AnCheckId ( 239 ACPI_PARSE_OBJECT *Op, 240 ACPI_NAME Type); 241 242 /* Values for Type argument above */ 243 244 #define ASL_TYPE_HID 0 245 #define ASL_TYPE_CID 1 246 247 BOOLEAN 248 AnIsInternalMethod ( 249 ACPI_PARSE_OBJECT *Op); 250 251 UINT32 252 AnGetInternalMethodReturnType ( 253 ACPI_PARSE_OBJECT *Op); 254 255 BOOLEAN 256 AnLastStatementIsReturn ( 257 ACPI_PARSE_OBJECT *Op); 258 259 void 260 AnCheckMethodReturnValue ( 261 ACPI_PARSE_OBJECT *Op, 262 const ACPI_OPCODE_INFO *OpInfo, 263 ACPI_PARSE_OBJECT *ArgOp, 264 UINT32 RequiredBtypes, 265 UINT32 ThisNodeBtype); 266 267 BOOLEAN 268 AnIsResultUsed ( 269 ACPI_PARSE_OBJECT *Op); 270 271 void 272 ApCheckForGpeNameConflict ( 273 ACPI_PARSE_OBJECT *Op); 274 275 void 276 ApCheckRegMethod ( 277 ACPI_PARSE_OBJECT *Op); 278 279 280 /* 281 * aslerror - error handling/reporting 282 */ 283 void 284 AslError ( 285 UINT8 Level, 286 UINT8 MessageId, 287 ACPI_PARSE_OBJECT *Op, 288 char *ExtraMessage); 289 290 void 291 AslCoreSubsystemError ( 292 ACPI_PARSE_OBJECT *Op, 293 ACPI_STATUS Status, 294 char *ExtraMessage, 295 BOOLEAN Abort); 296 297 int 298 AslCompilererror( 299 const char *s); 300 301 void 302 AslCommonError ( 303 UINT8 Level, 304 UINT8 MessageId, 305 UINT32 CurrentLineNumber, 306 UINT32 LogicalLineNumber, 307 UINT32 LogicalByteOffset, 308 UINT32 Column, 309 char *Filename, 310 char *ExtraMessage); 311 312 void 313 AslCommonError2 ( 314 UINT8 Level, 315 UINT8 MessageId, 316 UINT32 LineNumber, 317 UINT32 Column, 318 char *SourceLine, 319 char *Filename, 320 char *ExtraMessage); 321 322 void 323 AePrintException ( 324 UINT32 FileId, 325 ASL_ERROR_MSG *Enode, 326 char *Header); 327 328 void 329 AePrintErrorLog ( 330 UINT32 FileId); 331 332 void 333 AeClearErrorLog ( 334 void); 335 336 ACPI_PHYSICAL_ADDRESS 337 AeLocalGetRootPointer ( 338 void); 339 340 341 /* 342 * asllisting - generate all "listing" type files 343 */ 344 void 345 LsDoListings ( 346 void); 347 348 void 349 LsWriteNodeToAsmListing ( 350 ACPI_PARSE_OBJECT *Op); 351 352 void 353 LsWriteNode ( 354 ACPI_PARSE_OBJECT *Op, 355 UINT32 FileId); 356 357 void 358 LsDoHexOutput ( 359 void); 360 361 void 362 LsDumpParseTree ( 363 void); 364 365 /* 366 * aslfold - constant folding 367 */ 368 ACPI_STATUS 369 OpcAmlConstantWalk ( 370 ACPI_PARSE_OBJECT *Op, 371 UINT32 Level, 372 void *Context); 373 374 375 /* 376 * aslopcodes - generate AML opcodes 377 */ 378 ACPI_STATUS 379 OpcAmlOpcodeWalk ( 380 ACPI_PARSE_OBJECT *Op, 381 UINT32 Level, 382 void *Context); 383 384 ACPI_STATUS 385 OpcAmlOpcodeUpdateWalk ( 386 ACPI_PARSE_OBJECT *Op, 387 UINT32 Level, 388 void *Context); 389 390 void 391 OpcGenerateAmlOpcode ( 392 ACPI_PARSE_OBJECT *Op); 393 394 UINT32 395 OpcSetOptimalIntegerSize ( 396 ACPI_PARSE_OBJECT *Op); 397 398 void 399 OpcGetIntegerWidth ( 400 ACPI_PARSE_OBJECT *Op); 401 402 403 /* 404 * asloperands - generate AML operands for the AML opcodes 405 */ 406 ACPI_PARSE_OBJECT * 407 UtGetArg ( 408 ACPI_PARSE_OBJECT *Op, 409 UINT32 Argn); 410 411 void 412 OpnGenerateAmlOperands ( 413 ACPI_PARSE_OBJECT *Op); 414 415 void 416 OpnDoPackage ( 417 ACPI_PARSE_OBJECT *Op); 418 419 420 /* 421 * aslopt - optmization 422 */ 423 void 424 OptOptimizeNamePath ( 425 ACPI_PARSE_OBJECT *Op, 426 UINT32 Flags, 427 ACPI_WALK_STATE *WalkState, 428 char *AmlNameString, 429 ACPI_NAMESPACE_NODE *TargetNode); 430 431 432 /* 433 * aslcodegen - code generation 434 */ 435 void 436 CgGenerateAmlOutput ( 437 void); 438 439 440 /* 441 * aslfile 442 */ 443 void 444 FlOpenFile ( 445 UINT32 FileId, 446 char *Filename, 447 char *Mode); 448 449 450 /* 451 * asllength - calculate/adjust AML package lengths 452 */ 453 ACPI_STATUS 454 LnPackageLengthWalk ( 455 ACPI_PARSE_OBJECT *Op, 456 UINT32 Level, 457 void *Context); 458 459 ACPI_STATUS 460 LnInitLengthsWalk ( 461 ACPI_PARSE_OBJECT *Op, 462 UINT32 Level, 463 void *Context); 464 465 void 466 CgGenerateAmlLengths ( 467 ACPI_PARSE_OBJECT *Op); 468 469 470 /* 471 * aslmap - opcode mappings and reserved method names 472 */ 473 ACPI_OBJECT_TYPE 474 AslMapNamedOpcodeToDataType ( 475 UINT16 Opcode); 476 477 478 /* 479 * aslpredef - ACPI predefined names support 480 */ 481 BOOLEAN 482 ApCheckForPredefinedMethod ( 483 ACPI_PARSE_OBJECT *Op, 484 ASL_METHOD_INFO *MethodInfo); 485 486 void 487 ApCheckPredefinedReturnValue ( 488 ACPI_PARSE_OBJECT *Op, 489 ASL_METHOD_INFO *MethodInfo); 490 491 UINT32 492 ApCheckForPredefinedName ( 493 ACPI_PARSE_OBJECT *Op, 494 char *Name); 495 496 void 497 ApCheckForPredefinedObject ( 498 ACPI_PARSE_OBJECT *Op, 499 char *Name); 500 501 void 502 ApDisplayReservedNames ( 503 void); 504 505 506 /* 507 * asltransform - parse tree transformations 508 */ 509 ACPI_STATUS 510 TrAmlTransformWalk ( 511 ACPI_PARSE_OBJECT *Op, 512 UINT32 Level, 513 void *Context); 514 515 516 /* 517 * asltree - parse tree support 518 */ 519 ACPI_STATUS 520 TrWalkParseTree ( 521 ACPI_PARSE_OBJECT *Op, 522 UINT32 Visitation, 523 ASL_WALK_CALLBACK DescendingCallback, 524 ASL_WALK_CALLBACK AscendingCallback, 525 void *Context); 526 527 /* Values for "Visitation" parameter above */ 528 529 #define ASL_WALK_VISIT_DOWNWARD 0x01 530 #define ASL_WALK_VISIT_UPWARD 0x02 531 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) 532 533 534 ACPI_PARSE_OBJECT * 535 TrAllocateNode ( 536 UINT32 ParseOpcode); 537 538 void 539 TrReleaseNode ( 540 ACPI_PARSE_OBJECT *Op); 541 542 ACPI_PARSE_OBJECT * 543 TrUpdateNode ( 544 UINT32 ParseOpcode, 545 ACPI_PARSE_OBJECT *Op); 546 547 ACPI_PARSE_OBJECT * 548 TrCreateNode ( 549 UINT32 ParseOpcode, 550 UINT32 NumChildren, 551 ...); 552 553 ACPI_PARSE_OBJECT * 554 TrCreateLeafNode ( 555 UINT32 ParseOpcode); 556 557 ACPI_PARSE_OBJECT * 558 TrCreateValuedLeafNode ( 559 UINT32 ParseOpcode, 560 UINT64 Value); 561 562 ACPI_PARSE_OBJECT * 563 TrCreateConstantLeafNode ( 564 UINT32 ParseOpcode); 565 566 ACPI_PARSE_OBJECT * 567 TrLinkChildren ( 568 ACPI_PARSE_OBJECT *Op, 569 UINT32 NumChildren, 570 ...); 571 572 void 573 TrSetEndLineNumber ( 574 ACPI_PARSE_OBJECT *Op); 575 576 void 577 TrWalkTree ( 578 void); 579 580 ACPI_PARSE_OBJECT * 581 TrLinkPeerNode ( 582 ACPI_PARSE_OBJECT *Op1, 583 ACPI_PARSE_OBJECT *Op2); 584 585 ACPI_PARSE_OBJECT * 586 TrLinkChildNode ( 587 ACPI_PARSE_OBJECT *Op1, 588 ACPI_PARSE_OBJECT *Op2); 589 590 ACPI_PARSE_OBJECT * 591 TrSetNodeFlags ( 592 ACPI_PARSE_OBJECT *Op, 593 UINT32 Flags); 594 595 ACPI_PARSE_OBJECT * 596 TrSetNodeAmlLength ( 597 ACPI_PARSE_OBJECT *Op, 598 UINT32 Length); 599 600 ACPI_PARSE_OBJECT * 601 TrLinkPeerNodes ( 602 UINT32 NumPeers, 603 ...); 604 605 606 /* 607 * aslfiles - File I/O support 608 */ 609 void 610 AslAbort ( 611 void); 612 613 void 614 FlAddIncludeDirectory ( 615 char *Dir); 616 617 char * 618 FlMergePathnames ( 619 char *PrefixDir, 620 char *FilePathname); 621 622 void 623 FlOpenIncludeFile ( 624 ACPI_PARSE_OBJECT *Op); 625 626 void 627 FlFileError ( 628 UINT32 FileId, 629 UINT8 ErrorId); 630 631 UINT32 632 FlGetFileSize ( 633 UINT32 FileId); 634 635 ACPI_STATUS 636 FlReadFile ( 637 UINT32 FileId, 638 void *Buffer, 639 UINT32 Length); 640 641 void 642 FlWriteFile ( 643 UINT32 FileId, 644 void *Buffer, 645 UINT32 Length); 646 647 void 648 FlSeekFile ( 649 UINT32 FileId, 650 long Offset); 651 652 void 653 FlCloseFile ( 654 UINT32 FileId); 655 656 void 657 FlPrintFile ( 658 UINT32 FileId, 659 char *Format, 660 ...); 661 662 void 663 FlDeleteFile ( 664 UINT32 FileId); 665 666 void 667 FlSetLineNumber ( 668 UINT32 LineNumber); 669 670 void 671 FlSetFilename ( 672 char *Filename); 673 674 ACPI_STATUS 675 FlOpenInputFile ( 676 char *InputFilename); 677 678 ACPI_STATUS 679 FlOpenAmlOutputFile ( 680 char *InputFilename); 681 682 ACPI_STATUS 683 FlOpenMiscOutputFiles ( 684 char *InputFilename); 685 686 687 /* 688 * asload - load namespace in prep for cross reference 689 */ 690 ACPI_STATUS 691 LdLoadNamespace ( 692 ACPI_PARSE_OBJECT *RootOp); 693 694 695 /* 696 * asllookup - namespace cross reference 697 */ 698 ACPI_STATUS 699 LkCrossReferenceNamespace ( 700 void); 701 702 void 703 LkFindUnreferencedObjects ( 704 void); 705 706 ACPI_STATUS 707 LsDisplayNamespace ( 708 void); 709 710 void 711 LsSetupNsList ( 712 void *Handle); 713 714 715 /* 716 * aslutils - common compiler utilites 717 */ 718 void 719 DbgPrint ( 720 UINT32 Type, 721 char *Format, 722 ...); 723 724 /* Type values for above */ 725 726 #define ASL_DEBUG_OUTPUT 0 727 #define ASL_PARSE_OUTPUT 1 728 #define ASL_TREE_OUTPUT 2 729 730 void 731 UtDisplaySupportedTables ( 732 void); 733 734 void 735 UtDisplayConstantOpcodes ( 736 void); 737 738 UINT8 739 UtBeginEvent ( 740 char *Name); 741 742 void 743 UtEndEvent ( 744 UINT8 Event); 745 746 void * 747 UtLocalCalloc ( 748 UINT32 Size); 749 750 void 751 UtPrintFormattedName ( 752 UINT16 ParseOpcode, 753 UINT32 Level); 754 755 void 756 UtDisplaySummary ( 757 UINT32 FileId); 758 759 UINT8 760 UtHexCharToValue ( 761 int HexChar); 762 763 void 764 UtConvertByteToHex ( 765 UINT8 RawByte, 766 UINT8 *Buffer); 767 768 void 769 UtConvertByteToAsmHex ( 770 UINT8 RawByte, 771 UINT8 *Buffer); 772 773 char * 774 UtGetOpName ( 775 UINT32 ParseOpcode); 776 777 void 778 UtSetParseOpName ( 779 ACPI_PARSE_OBJECT *Op); 780 781 char * 782 UtGetStringBuffer ( 783 UINT32 Length); 784 785 void 786 UtExpandLineBuffers ( 787 void); 788 789 ACPI_STATUS 790 UtInternalizeName ( 791 char *ExternalName, 792 char **ConvertedName); 793 794 void 795 UtAttachNamepathToOwner ( 796 ACPI_PARSE_OBJECT *Op, 797 ACPI_PARSE_OBJECT *NameNode); 798 799 ACPI_PARSE_OBJECT * 800 UtCheckIntegerRange ( 801 ACPI_PARSE_OBJECT *Op, 802 UINT32 LowValue, 803 UINT32 HighValue); 804 805 UINT64 806 UtDoConstant ( 807 char *String); 808 809 ACPI_STATUS 810 UtStrtoul64 ( 811 char *String, 812 UINT32 Base, 813 UINT64 *RetInteger); 814 815 816 /* 817 * asluuid - UUID support 818 */ 819 ACPI_STATUS 820 AuValidateUuid ( 821 char *InString); 822 823 ACPI_STATUS 824 AuConvertStringToUuid ( 825 char *InString, 826 char *UuIdBuffer); 827 828 ACPI_STATUS 829 AuConvertUuidToString ( 830 char *UuIdBuffer, 831 char *OutString); 832 833 /* 834 * aslresource - Resource template generation utilities 835 */ 836 void 837 RsSmallAddressCheck ( 838 UINT8 Type, 839 UINT32 Minimum, 840 UINT32 Maximum, 841 UINT32 Length, 842 UINT32 Alignment, 843 ACPI_PARSE_OBJECT *MinOp, 844 ACPI_PARSE_OBJECT *MaxOp, 845 ACPI_PARSE_OBJECT *LengthOp, 846 ACPI_PARSE_OBJECT *AlignOp, 847 ACPI_PARSE_OBJECT *Op); 848 849 void 850 RsLargeAddressCheck ( 851 UINT64 Minimum, 852 UINT64 Maximum, 853 UINT64 Length, 854 UINT64 Granularity, 855 UINT8 Flags, 856 ACPI_PARSE_OBJECT *MinOp, 857 ACPI_PARSE_OBJECT *MaxOp, 858 ACPI_PARSE_OBJECT *LengthOp, 859 ACPI_PARSE_OBJECT *GranOp, 860 ACPI_PARSE_OBJECT *Op); 861 862 UINT16 863 RsGetStringDataLength ( 864 ACPI_PARSE_OBJECT *InitializerOp); 865 866 ASL_RESOURCE_NODE * 867 RsAllocateResourceNode ( 868 UINT32 Size); 869 870 void 871 RsCreateResourceField ( 872 ACPI_PARSE_OBJECT *Op, 873 char *Name, 874 UINT32 ByteOffset, 875 UINT32 BitOffset, 876 UINT32 BitLength); 877 878 void 879 RsSetFlagBits ( 880 UINT8 *Flags, 881 ACPI_PARSE_OBJECT *Op, 882 UINT8 Position, 883 UINT8 DefaultBit); 884 885 void 886 RsSetFlagBits16 ( 887 UINT16 *Flags, 888 ACPI_PARSE_OBJECT *Op, 889 UINT8 Position, 890 UINT8 DefaultBit); 891 892 ACPI_PARSE_OBJECT * 893 RsCompleteNodeAndGetNext ( 894 ACPI_PARSE_OBJECT *Op); 895 896 void 897 RsCheckListForDuplicates ( 898 ACPI_PARSE_OBJECT *Op); 899 900 ASL_RESOURCE_NODE * 901 RsDoOneResourceDescriptor ( 902 ACPI_PARSE_OBJECT *DescriptorTypeOp, 903 UINT32 CurrentByteOffset, 904 UINT8 *State); 905 906 /* Values for State above */ 907 908 #define ACPI_RSTATE_NORMAL 0 909 #define ACPI_RSTATE_START_DEPENDENT 1 910 #define ACPI_RSTATE_DEPENDENT_LIST 2 911 912 UINT32 913 RsLinkDescriptorChain ( 914 ASL_RESOURCE_NODE **PreviousRnode, 915 ASL_RESOURCE_NODE *Rnode); 916 917 void 918 RsDoResourceTemplate ( 919 ACPI_PARSE_OBJECT *Op); 920 921 922 /* 923 * aslrestype1 - Miscellaneous Small descriptors 924 */ 925 ASL_RESOURCE_NODE * 926 RsDoEndTagDescriptor ( 927 ACPI_PARSE_OBJECT *Op, 928 UINT32 CurrentByteOffset); 929 930 ASL_RESOURCE_NODE * 931 RsDoEndDependentDescriptor ( 932 ACPI_PARSE_OBJECT *Op, 933 UINT32 CurrentByteOffset); 934 935 ASL_RESOURCE_NODE * 936 RsDoMemory24Descriptor ( 937 ACPI_PARSE_OBJECT *Op, 938 UINT32 CurrentByteOffset); 939 940 ASL_RESOURCE_NODE * 941 RsDoMemory32Descriptor ( 942 ACPI_PARSE_OBJECT *Op, 943 UINT32 CurrentByteOffset); 944 945 ASL_RESOURCE_NODE * 946 RsDoMemory32FixedDescriptor ( 947 ACPI_PARSE_OBJECT *Op, 948 UINT32 CurrentByteOffset); 949 950 ASL_RESOURCE_NODE * 951 RsDoStartDependentDescriptor ( 952 ACPI_PARSE_OBJECT *Op, 953 UINT32 CurrentByteOffset); 954 955 ASL_RESOURCE_NODE * 956 RsDoStartDependentNoPriDescriptor ( 957 ACPI_PARSE_OBJECT *Op, 958 UINT32 CurrentByteOffset); 959 960 ASL_RESOURCE_NODE * 961 RsDoVendorSmallDescriptor ( 962 ACPI_PARSE_OBJECT *Op, 963 UINT32 CurrentByteOffset); 964 965 966 /* 967 * aslrestype1i - I/O-related Small descriptors 968 */ 969 ASL_RESOURCE_NODE * 970 RsDoDmaDescriptor ( 971 ACPI_PARSE_OBJECT *Op, 972 UINT32 CurrentByteOffset); 973 974 ASL_RESOURCE_NODE * 975 RsDoFixedDmaDescriptor ( 976 ACPI_PARSE_OBJECT *Op, 977 UINT32 CurrentByteOffset); 978 979 ASL_RESOURCE_NODE * 980 RsDoFixedIoDescriptor ( 981 ACPI_PARSE_OBJECT *Op, 982 UINT32 CurrentByteOffset); 983 984 ASL_RESOURCE_NODE * 985 RsDoIoDescriptor ( 986 ACPI_PARSE_OBJECT *Op, 987 UINT32 CurrentByteOffset); 988 989 ASL_RESOURCE_NODE * 990 RsDoIrqDescriptor ( 991 ACPI_PARSE_OBJECT *Op, 992 UINT32 CurrentByteOffset); 993 994 ASL_RESOURCE_NODE * 995 RsDoIrqNoFlagsDescriptor ( 996 ACPI_PARSE_OBJECT *Op, 997 UINT32 CurrentByteOffset); 998 999 1000 /* 1001 * aslrestype2 - Large resource descriptors 1002 */ 1003 ASL_RESOURCE_NODE * 1004 RsDoInterruptDescriptor ( 1005 ACPI_PARSE_OBJECT *Op, 1006 UINT32 CurrentByteOffset); 1007 1008 ASL_RESOURCE_NODE * 1009 RsDoVendorLargeDescriptor ( 1010 ACPI_PARSE_OBJECT *Op, 1011 UINT32 CurrentByteOffset); 1012 1013 ASL_RESOURCE_NODE * 1014 RsDoGeneralRegisterDescriptor ( 1015 ACPI_PARSE_OBJECT *Op, 1016 UINT32 CurrentByteOffset); 1017 1018 ASL_RESOURCE_NODE * 1019 RsDoGpioIntDescriptor ( 1020 ACPI_PARSE_OBJECT *Op, 1021 UINT32 CurrentByteOffset); 1022 1023 ASL_RESOURCE_NODE * 1024 RsDoGpioIoDescriptor ( 1025 ACPI_PARSE_OBJECT *Op, 1026 UINT32 CurrentByteOffset); 1027 1028 ASL_RESOURCE_NODE * 1029 RsDoI2cSerialBusDescriptor ( 1030 ACPI_PARSE_OBJECT *Op, 1031 UINT32 CurrentByteOffset); 1032 1033 ASL_RESOURCE_NODE * 1034 RsDoSpiSerialBusDescriptor ( 1035 ACPI_PARSE_OBJECT *Op, 1036 UINT32 CurrentByteOffset); 1037 1038 ASL_RESOURCE_NODE * 1039 RsDoUartSerialBusDescriptor ( 1040 ACPI_PARSE_OBJECT *Op, 1041 UINT32 CurrentByteOffset); 1042 1043 /* 1044 * aslrestype2d - DWord address descriptors 1045 */ 1046 ASL_RESOURCE_NODE * 1047 RsDoDwordIoDescriptor ( 1048 ACPI_PARSE_OBJECT *Op, 1049 UINT32 CurrentByteOffset); 1050 1051 ASL_RESOURCE_NODE * 1052 RsDoDwordMemoryDescriptor ( 1053 ACPI_PARSE_OBJECT *Op, 1054 UINT32 CurrentByteOffset); 1055 1056 ASL_RESOURCE_NODE * 1057 RsDoDwordSpaceDescriptor ( 1058 ACPI_PARSE_OBJECT *Op, 1059 UINT32 CurrentByteOffset); 1060 1061 1062 /* 1063 * aslrestype2e - Extended address descriptors 1064 */ 1065 ASL_RESOURCE_NODE * 1066 RsDoExtendedIoDescriptor ( 1067 ACPI_PARSE_OBJECT *Op, 1068 UINT32 CurrentByteOffset); 1069 1070 ASL_RESOURCE_NODE * 1071 RsDoExtendedMemoryDescriptor ( 1072 ACPI_PARSE_OBJECT *Op, 1073 UINT32 CurrentByteOffset); 1074 1075 ASL_RESOURCE_NODE * 1076 RsDoExtendedSpaceDescriptor ( 1077 ACPI_PARSE_OBJECT *Op, 1078 UINT32 CurrentByteOffset); 1079 1080 1081 /* 1082 * aslrestype2q - QWord address descriptors 1083 */ 1084 ASL_RESOURCE_NODE * 1085 RsDoQwordIoDescriptor ( 1086 ACPI_PARSE_OBJECT *Op, 1087 UINT32 CurrentByteOffset); 1088 1089 ASL_RESOURCE_NODE * 1090 RsDoQwordMemoryDescriptor ( 1091 ACPI_PARSE_OBJECT *Op, 1092 UINT32 CurrentByteOffset); 1093 1094 ASL_RESOURCE_NODE * 1095 RsDoQwordSpaceDescriptor ( 1096 ACPI_PARSE_OBJECT *Op, 1097 UINT32 CurrentByteOffset); 1098 1099 1100 /* 1101 * aslrestype2w - Word address descriptors 1102 */ 1103 ASL_RESOURCE_NODE * 1104 RsDoWordIoDescriptor ( 1105 ACPI_PARSE_OBJECT *Op, 1106 UINT32 CurrentByteOffset); 1107 1108 ASL_RESOURCE_NODE * 1109 RsDoWordSpaceDescriptor ( 1110 ACPI_PARSE_OBJECT *Op, 1111 UINT32 CurrentByteOffset); 1112 1113 ASL_RESOURCE_NODE * 1114 RsDoWordBusNumberDescriptor ( 1115 ACPI_PARSE_OBJECT *Op, 1116 UINT32 CurrentByteOffset); 1117 1118 /* 1119 * Entry to data table compiler subsystem 1120 */ 1121 ACPI_STATUS 1122 DtDoCompile( 1123 void); 1124 1125 ACPI_STATUS 1126 DtCreateTemplates ( 1127 char *Signature); 1128 1129 #endif /* __ASLCOMPILER_H */ 1130