diff options
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/aslcompiler.h')
-rw-r--r-- | sys/contrib/dev/acpica/compiler/aslcompiler.h | 597 |
1 files changed, 192 insertions, 405 deletions
diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.h b/sys/contrib/dev/acpica/compiler/aslcompiler.h index 3da39af..d3216a6 100644 --- a/sys/contrib/dev/acpica/compiler/aslcompiler.h +++ b/sys/contrib/dev/acpica/compiler/aslcompiler.h @@ -1,8 +1,8 @@ /****************************************************************************** * - * Module Name: aslcompiler.h - common include file - * $Revision: 130 $ + * Module Name: aslcompiler.h - common include file for iASL + * $Revision: 1.142 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp. * All rights reserved. * * 2. License @@ -139,84 +139,15 @@ #include <ctype.h> -#include "acpi.h" -#include "amlresrc.h" -#include "acdebug.h" -#include "asltypes.h" -#include "aslglobal.h" +#include <contrib/dev/acpica/acpi.h> +#include <contrib/dev/acpica/amlresrc.h> +#include <contrib/dev/acpica/acdebug.h> +/* Compiler headers */ -/* - * Compiler versions and names - */ - -#define CompilerCreatorRevision ACPI_CA_VERSION - -#define IntelAcpiCA "Intel ACPI Component Architecture" -#define CompilerId "ASL Optimizing Compiler / AML Disassembler" -#define CompilerCopyright "Copyright (C) 2000 - 2004 Intel Corporation" -#define CompilerCompliance "ACPI 2.0c" -#define CompilerName "iasl" -#define CompilerCreatorId "INTL" - - -/* Configuration constants */ - -#define ASL_MAX_ERROR_COUNT 200 -#define ASL_NODE_CACHE_SIZE 1024 -#define ASL_STRING_CACHE_SIZE 32768 - -#define ASL_FIRST_PARSE_OPCODE PARSEOP_ACCESSAS -#define ASL_YYTNAME_START 3 - -/* - * Macros - */ - -#define ASL_RESDESC_OFFSET(m) ACPI_OFFSET (ASL_RESOURCE_DESC, m) -#define ASL_PTR_DIFF(a,b) ((UINT8 *)(b) - (UINT8 *)(a)) -#define ASL_PTR_ADD(a,b) ((UINT8 *)(a) = ((UINT8 *)(a) + (b))) -#define ASL_GET_CHILD_NODE(a) (a)->Asl.Child -#define ASL_GET_PEER_NODE(a) (a)->Asl.Next -#define OP_TABLE_ENTRY(a,b,c,d) {b,d,a,c} - - -#define ASL_PARSE_OPCODE_BASE PARSEOP_ACCESSAS /* First Lex type */ - - -/* Internal AML opcodes */ - -#define AML_RAW_DATA_BYTE (UINT16) 0xAA01 /* write one raw byte */ -#define AML_RAW_DATA_WORD (UINT16) 0xAA02 /* write 2 raw bytes */ -#define AML_RAW_DATA_DWORD (UINT16) 0xAA04 /* write 4 raw bytes */ -#define AML_RAW_DATA_QWORD (UINT16) 0xAA08 /* write 8 raw bytes */ -#define AML_RAW_DATA_BUFFER (UINT16) 0xAA0B /* raw buffer with length */ -#define AML_RAW_DATA_CHAIN (UINT16) 0xAA0C /* chain of raw buffers */ -#define AML_PACKAGE_LENGTH (UINT16) 0xAA10 -#define AML_UNASSIGNED_OPCODE (UINT16) 0xEEEE -#define AML_DEFAULT_ARG_OP (UINT16) 0xDDDD - - -/* filename suffixes for output files */ - -#define FILE_SUFFIX_AML_CODE "aml" -#define FILE_SUFFIX_LISTING "lst" -#define FILE_SUFFIX_HEX_DUMP "hex" -#define FILE_SUFFIX_DEBUG "txt" -#define FILE_SUFFIX_SOURCE "src" -#define FILE_SUFFIX_NAMESPACE "nsp" -#define FILE_SUFFIX_ASM_SOURCE "asm" -#define FILE_SUFFIX_C_SOURCE "c" -#define FILE_SUFFIX_DISASSEMBLY "dsl" -#define FILE_SUFFIX_ASM_INCLUDE "inc" -#define FILE_SUFFIX_C_INCLUDE "h" - - -/* Misc */ - -#define ASL_EXTERNAL_METHOD 255 -#define ASL_ABORT TRUE -#define ASL_NO_ABORT FALSE +#include <contrib/dev/acpica/compiler/asldefine.h> +#include <contrib/dev/acpica/compiler/asltypes.h> +#include <contrib/dev/acpica/compiler/aslglobal.h> /******************************************************************************* @@ -225,13 +156,9 @@ * ******************************************************************************/ - -void -end_stmt (void); - - -/* parser */ - +/* + * parser - generated from flex/bison, lex/yacc, etc. + */ int AslCompilerparse( void); @@ -241,10 +168,6 @@ AslDoError ( void); int -AslCompilererror( - char *s); - -int AslCompilerlex( void); @@ -265,8 +188,10 @@ AslPushInputFileStack ( FILE *InputFile, char *Filename); -/* aslmain */ +/* + * aslcompile - compile mainline + */ void AslCompilerSignon ( UINT32 FileId); @@ -275,38 +200,74 @@ void AslCompilerFileHeader ( UINT32 FileId); +int +CmDoCompile ( + void); + void -AslDoSourceOutputFile ( - char *Buffer); +CmDoOutputFiles ( + void); -#define ASL_DEBUG_OUTPUT 0 -#define ASL_PARSE_OUTPUT 1 -#define ASL_TREE_OUTPUT 2 +void +CmCleanupAndExit ( + void); -void -DbgPrint ( - UINT32 Type, - char *Format, - ...); +/* + * aslanalyze - semantic analysis + */ +ACPI_STATUS +AnOtherSemanticAnalysisWalkBegin ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); -void -ErrorContext (void); +ACPI_STATUS +AnOtherSemanticAnalysisWalkEnd ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); -/* aslcompile */ +ACPI_STATUS +AnOperandTypecheckWalkBegin ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); -int -CmDoCompile (void); +ACPI_STATUS +AnOperandTypecheckWalkEnd ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); -void -CmDoOutputFiles (void); +ACPI_STATUS +AnMethodAnalysisWalkBegin ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); -void -CmCleanupAndExit (void); +ACPI_STATUS +AnMethodAnalysisWalkEnd ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); +ACPI_STATUS +AnMethodTypingWalkBegin ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); + +ACPI_STATUS +AnMethodTypingWalkEnd ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); -/* aslerror */ +/* + * aslerror - error handling/reporting + */ void AslError ( UINT8 Level, @@ -321,6 +282,10 @@ AslCoreSubsystemError ( char *ExtraMessage, BOOLEAN Abort); +int +AslCompilererror( + char *s); + void AslCommonError ( UINT8 Level, @@ -348,18 +313,12 @@ AeLocalGetRootPointer ( ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress); -/* asllisting */ - -void -LsWriteListingHexBytes ( - UINT8 *Buffer, - UINT32 Length, - UINT32 FileId); - +/* + * asllisting - generate all "listing" type files + */ void -LsWriteNodeToListing ( - ACPI_PARSE_OBJECT *Op, - UINT32 FileId); +LsDoListings ( + void); void LsWriteNodeToAsmListing ( @@ -371,38 +330,23 @@ LsWriteNode ( UINT32 FileId); void -LsFinishSourceListing ( - UINT32 FileId); - -void -LsFlushListingBuffer ( - UINT32 FileId); - -void LsDoHexOutput ( void); -void -LsDoHexOutputC ( - void); -void -LsDoHexOutputAsm ( - void); - -void -LsPushNode ( - char *Filename); - -ASL_LISTING_NODE * -LsPopNode ( - void); +/* + * aslfold - constant folding + */ +ACPI_STATUS +OpcAmlConstantWalk ( + ACPI_PARSE_OBJECT *Op, + UINT32 Level, + void *Context); /* * aslopcodes - generate AML opcodes */ - ACPI_STATUS OpcAmlOpcodeWalk ( ACPI_PARSE_OBJECT *Op, @@ -410,7 +354,7 @@ OpcAmlOpcodeWalk ( void *Context); ACPI_STATUS -OpcAmlConstantWalk ( +OpcAmlOpcodeUpdateWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); @@ -427,59 +371,27 @@ void OpcGetIntegerWidth ( ACPI_PARSE_OBJECT *Op); + /* * asloperands - generate AML operands for the AML opcodes */ +ACPI_PARSE_OBJECT * +UtGetArg ( + ACPI_PARSE_OBJECT *Op, + UINT32 Argn); void OpnGenerateAmlOperands ( ACPI_PARSE_OBJECT *Op); void -OpnDoField ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoBankField ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoBuffer ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoDefinitionBlock ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoFieldCommon ( - ACPI_PARSE_OBJECT *FieldOp, - ACPI_PARSE_OBJECT *Op); - -void -OpnDoIndexField ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoLoadTable ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoMethod ( - ACPI_PARSE_OBJECT *Op); - -void OpnDoPackage ( ACPI_PARSE_OBJECT *Op); -void -OpnDoRegion ( - ACPI_PARSE_OBJECT *Op); /* * aslopt - optmization */ - void OptOptimizeNamePath ( ACPI_PARSE_OBJECT *Op, @@ -490,35 +402,16 @@ OptOptimizeNamePath ( /* - * aslresource - resource template generation + * aslcodegen - code generation */ - -void -RsDoResourceTemplate ( - ACPI_PARSE_OBJECT *Op); - - -void -CgGenerateAmlOutput (void); - -void -CgGenerateListing ( - UINT32 FileId); - void -LsDoListings (void); - -void -CgGenerateAmlLengths ( - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -CgOpenOutputFile ( - char *InputFilename); - +CgGenerateAmlOutput ( + void); -/* asllength */ +/* + * asllength - calculate/adjust AML package lengths + */ ACPI_STATUS LnPackageLengthWalk ( ACPI_PARSE_OBJECT *Op, @@ -531,37 +424,26 @@ LnInitLengthsWalk ( UINT32 Level, void *Context); - -ACPI_STATUS -CgAmlWriteWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -void -CgGenerateOutput( - void); - -void -CgCloseTable (void); - - void -CgWriteNode ( +CgGenerateAmlLengths ( ACPI_PARSE_OBJECT *Op); + /* - * aslmap + * aslmap - opcode mappings and reserved method names */ - ACPI_OBJECT_TYPE AslMapNamedOpcodeToDataType ( UINT16 Opcode); +void +MpDisplayReservedNames ( + void); + + /* * asltransform - parse tree transformations */ - ACPI_STATUS TrAmlTransformWalk ( ACPI_PARSE_OBJECT *Op, @@ -569,22 +451,9 @@ TrAmlTransformWalk ( void *Context); -void -TrTransformSubtree ( - ACPI_PARSE_OBJECT *Op); - -void -TrDoSwitch ( - ACPI_PARSE_OBJECT *Op); - -void -TrDoDefinitionBlock ( - ACPI_PARSE_OBJECT *Op); - /* * asltree - parse tree support */ - ACPI_STATUS TrWalkParseTree ( ACPI_PARSE_OBJECT *Op, @@ -593,11 +462,6 @@ TrWalkParseTree ( ASL_WALK_CALLBACK AscendingCallback, void *Context); -ACPI_PARSE_OBJECT * -TrAllocateNode ( - UINT32 ParseOpcode); - - /* Values for "Visitation" parameter above */ #define ASL_WALK_VISIT_DOWNWARD 0x01 @@ -605,9 +469,13 @@ TrAllocateNode ( #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) -char * -TrAddNode ( - void *Thing); +ACPI_PARSE_OBJECT * +TrAllocateNode ( + UINT32 ParseOpcode); + +void +TrReleaseNode ( + ACPI_PARSE_OBJECT *Op); ACPI_PARSE_OBJECT * TrUpdateNode ( @@ -640,7 +508,8 @@ TrSetEndLineNumber ( ACPI_PARSE_OBJECT *Op); void -TrWalkTree (void); +TrWalkTree ( + void); ACPI_PARSE_OBJECT * TrLinkPeerNode ( @@ -662,72 +531,13 @@ TrLinkPeerNodes ( UINT32 NumPeers, ...); -void -TrReleaseNode ( - ACPI_PARSE_OBJECT *Op); - -/* Analyze */ - -ACPI_STATUS -AnOtherSemanticAnalysisWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnOtherSemanticAnalysisWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnOperandTypecheckWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnOperandTypecheckWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodAnalysisWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodAnalysisWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodTypingWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodTypingWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - /* * aslfiles - File I/O support */ - void -AslAbort (void); - -FILE * -FlOpenLocalFile ( - char *LocalName, - char *Mode); +AslAbort ( + void); void FlOpenIncludeFile ( @@ -738,12 +548,6 @@ FlFileError ( UINT32 FileId, UINT8 ErrorId); -void -FlOpenFile ( - UINT32 FileId, - char *Filename, - char *Mode); - ACPI_STATUS FlReadFile ( UINT32 FileId, @@ -776,10 +580,6 @@ FlSetLineNumber ( ACPI_PARSE_OBJECT *Op); ACPI_STATUS -FlParseInputPathname ( - char *InputFilename); - -ACPI_STATUS FlOpenInputFile ( char *InputFilename); @@ -791,74 +591,53 @@ ACPI_STATUS FlOpenMiscOutputFiles ( char *InputFilename); -void -MpDisplayReservedNames ( - void); - - -/* Load */ +/* + * asload - load namespace in prep for cross reference + */ ACPI_STATUS LdLoadNamespace ( ACPI_PARSE_OBJECT *RootOp); +/* + * asllookup - namespace cross reference + */ ACPI_STATUS -LdNamespace1Begin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -LdNamespace1End ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/* Lookup */ - -ACPI_STATUS -LkCrossReferenceNamespace (void); - -ACPI_STATUS -LkNamespaceLocateBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -LkNamespaceLocateEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); +LkCrossReferenceNamespace ( + void); ACPI_STATUS LsDisplayNamespace ( void); -ACPI_STATUS -LsCompareOneNamespaceObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); +/* + * aslutils - common compiler utilites + */ +void +DbgPrint ( + UINT32 Type, + char *Format, + ...); -/* Utils */ +/* Type values for above */ + +#define ASL_DEBUG_OUTPUT 0 +#define ASL_PARSE_OUTPUT 1 +#define ASL_TREE_OUTPUT 2 void UtDisplayConstantOpcodes ( void); -void +UINT8 UtBeginEvent ( - UINT32 Event, char *Name); void UtEndEvent ( - UINT32 Event); + UINT8 Event); void * UtLocalCalloc ( @@ -875,7 +654,7 @@ UtDisplaySummary ( UINT8 UtHexCharToValue ( - int hc); + int HexChar); void UtConvertByteToHex ( @@ -895,11 +674,6 @@ void UtSetParseOpName ( ACPI_PARSE_OBJECT *Op); -ACPI_PARSE_OBJECT * -UtGetArg ( - ACPI_PARSE_OBJECT *Op, - UINT32 Argn); - char * UtGetStringBuffer ( UINT32 Length); @@ -920,39 +694,19 @@ UtCheckIntegerRange ( UINT32 LowValue, UINT32 HighValue); -ACPI_STATUS -UtStrtoul64 ( - char *String, - UINT32 Base, - ACPI_INTEGER *RetInteger); - ACPI_INTEGER UtDoConstant ( char *String); -/* Find */ - -void -LnAdjustLengthToRoot ( - ACPI_PARSE_OBJECT *Op, - UINT32 LengthDelta); - - -#define NEXT_RESOURCE_DESC(a,b) (ASL_RESOURCE_DESC *) (((char *) (a)) + sizeof(b)) - -#define DEFAULT_RESOURCE_DESC_SIZE (sizeof (ASL_RESOURCE_DESC) + sizeof (ASL_END_TAG_DESC)) - - /* - * Resource utilities + * aslresource - Resource template generation utilities */ - ASL_RESOURCE_NODE * RsAllocateResourceNode ( UINT32 Size); - void +void RsCreateBitField ( ACPI_PARSE_OBJECT *Op, char *Name, @@ -976,12 +730,18 @@ ACPI_PARSE_OBJECT * RsCompleteNodeAndGetNext ( ACPI_PARSE_OBJECT *Op); +void +RsCheckListForDuplicates ( + ACPI_PARSE_OBJECT *Op); + ASL_RESOURCE_NODE * RsDoOneResourceDescriptor ( ACPI_PARSE_OBJECT *DescriptorTypeOp, UINT32 CurrentByteOffset, UINT8 *State); +/* Values for State above */ + #define ACPI_RSTATE_NORMAL 0 #define ACPI_RSTATE_START_DEPENDENT 1 #define ACPI_RSTATE_DEPENDENT_LIST 2 @@ -991,11 +751,14 @@ RsLinkDescriptorChain ( ASL_RESOURCE_NODE **PreviousRnode, ASL_RESOURCE_NODE *Rnode); +void +RsDoResourceTemplate ( + ACPI_PARSE_OBJECT *Op); + /* - * Small descriptors + * aslrestype1 - generate Small descriptors */ - ASL_RESOURCE_NODE * RsDoDmaDescriptor ( ACPI_PARSE_OBJECT *Op, @@ -1012,11 +775,6 @@ RsDoFixedIoDescriptor ( UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * -RsDoInterruptDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * RsDoIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); @@ -1063,12 +821,12 @@ RsDoVendorSmallDescriptor ( /* - * Large descriptors + * aslrestype2 - generate Large descriptors */ - -UINT32 -RsGetStringDataLength ( - ACPI_PARSE_OBJECT *InitializerOp); +ASL_RESOURCE_NODE * +RsDoInterruptDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoDwordIoDescriptor ( @@ -1081,6 +839,26 @@ RsDoDwordMemoryDescriptor ( UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * +RsDoDwordSpaceDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * +RsDoExtendedIoDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * +RsDoExtendedMemoryDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * +RsDoExtendedSpaceDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * RsDoQwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); @@ -1091,11 +869,21 @@ RsDoQwordMemoryDescriptor ( UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * +RsDoQwordSpaceDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * RsDoWordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * +RsDoWordSpaceDescriptor ( + ACPI_PARSE_OBJECT *Op, + UINT32 CurrentByteOffset); + +ASL_RESOURCE_NODE * RsDoWordBusNumberDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); @@ -1110,6 +898,5 @@ RsDoGeneralRegisterDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); - #endif /* __ASLCOMPILER_H */ |