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