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