diff options
author | Robert Moore <Robert.Moore@intel.com> | 2016-06-24 09:49:55 -0700 |
---|---|---|
committer | Robert Moore <Robert.Moore@intel.com> | 2016-06-24 09:49:55 -0700 |
commit | 135865a19d4b217be39aa0b41a921c4ea9cddc9f (patch) | |
tree | 0a9b6b7a969283c0666127789f66a02b1025bef4 | |
parent | 2b896c59e53243c95600f2a3f7e1fd02c044cb37 (diff) | |
download | acpica-135865a19d4b217be39aa0b41a921c4ea9cddc9f.tar.gz |
AcpiHelp: Add support for AML flags values and other grammar
All flags values, name grammar, package length encoding, etc.
Adds a new startup option, -g
-rwxr-xr-x | generate/msvc9/AcpiHelp.vcproj | 4 | ||||
-rw-r--r-- | generate/unix/acpihelp/Makefile | 1 | ||||
-rw-r--r-- | source/tools/acpihelp/acpihelp.h | 18 | ||||
-rw-r--r-- | source/tools/acpihelp/ahamlops.c | 1 | ||||
-rw-r--r-- | source/tools/acpihelp/ahdecode.c | 130 | ||||
-rw-r--r-- | source/tools/acpihelp/ahgrammar.c | 361 | ||||
-rw-r--r-- | source/tools/acpihelp/ahmain.c | 38 |
7 files changed, 536 insertions, 17 deletions
diff --git a/generate/msvc9/AcpiHelp.vcproj b/generate/msvc9/AcpiHelp.vcproj index d2ca238ee..1af34675c 100755 --- a/generate/msvc9/AcpiHelp.vcproj +++ b/generate/msvc9/AcpiHelp.vcproj @@ -255,6 +255,10 @@ </FileConfiguration> </File> <File + RelativePath="..\..\source\tools\acpihelp\ahgrammar.c" + > + </File> + <File RelativePath="..\..\source\tools\acpihelp\ahmain.c" > </File> diff --git a/generate/unix/acpihelp/Makefile b/generate/unix/acpihelp/Makefile index d50e416c8..d525224aa 100644 --- a/generate/unix/acpihelp/Makefile +++ b/generate/unix/acpihelp/Makefile @@ -32,6 +32,7 @@ OBJECTS = \ $(OBJDIR)/ahaslkey.o\ $(OBJDIR)/ahaslops.o\ $(OBJDIR)/ahdecode.o\ + $(OBJDIR)/ahgrammar.o\ $(OBJDIR)/ahids.o\ $(OBJDIR)/ahpredef.o\ $(OBJDIR)/ahmain.o\ diff --git a/source/tools/acpihelp/acpihelp.h b/source/tools/acpihelp/acpihelp.h index 99c454bad..adce6d46a 100644 --- a/source/tools/acpihelp/acpihelp.h +++ b/source/tools/acpihelp/acpihelp.h @@ -142,9 +142,11 @@ typedef enum AH_DECODE_PREDEFINED_NAME, AH_DECODE_AML, AH_DECODE_AML_OPCODE, - AH_DISPLAY_DEVICE_IDS, - AH_DECODE_EXCEPTION, + AH_DECODE_AML_TYPE, AH_DECODE_ASL_AML, + AH_DECODE_EXCEPTION, + + AH_DISPLAY_DEVICE_IDS, AH_DISPLAY_UUIDS, AH_DISPLAY_TABLES, AH_DISPLAY_DIRECTIVES @@ -168,6 +170,13 @@ typedef struct ah_aml_opcode } AH_AML_OPCODE; +typedef struct ah_aml_type +{ + char *Name; + char *Description; + +} AH_AML_TYPE; + typedef struct ah_asl_operator { char *Name; @@ -192,6 +201,7 @@ typedef struct ah_directive_info } AH_DIRECTIVE_INFO; extern const AH_AML_OPCODE AmlOpcodeInfo[]; +extern const AH_AML_TYPE AmlTypesInfo[]; extern const AH_ASL_OPERATOR AslOperatorInfo[]; extern const AH_ASL_KEYWORD AslKeywordInfo[]; extern const AH_UUID AcpiUuids[]; @@ -228,6 +238,10 @@ AhFindAslKeywords ( char *Name); void +AhFindAmlTypes ( + char *Name); + +void AhDisplayDeviceIds ( char *Name); diff --git a/source/tools/acpihelp/ahamlops.c b/source/tools/acpihelp/ahamlops.c index 3d66eabec..79b596c67 100644 --- a/source/tools/acpihelp/ahamlops.c +++ b/source/tools/acpihelp/ahamlops.c @@ -115,6 +115,7 @@ #include "acpihelp.h" + /* * AML opcodes with related syntax and grammar information. * This table was extracted from the ACPI specification. diff --git a/source/tools/acpihelp/ahdecode.c b/source/tools/acpihelp/ahdecode.c index 4d9cb7000..f455f3601 100644 --- a/source/tools/acpihelp/ahdecode.c +++ b/source/tools/acpihelp/ahdecode.c @@ -153,6 +153,10 @@ AhDisplayAmlOpcode ( const AH_AML_OPCODE *Op); static void +AhDisplayAmlType ( + const AH_AML_TYPE *Op); + +static void AhDisplayAslOperator ( const AH_ASL_OPERATOR *Op); @@ -224,7 +228,7 @@ AhFindPredefinedNames ( char Name[9]; - if (!NamePrefix) + if (!NamePrefix || (NamePrefix[0] == '*')) { Found = AhDisplayPredefinedName (NULL, 0); return; @@ -428,7 +432,7 @@ AhFindAmlOpcode ( continue; } - if (!Name) + if (!Name || (Name[0] == '*')) { AhDisplayAmlOpcode (Op); Found = TRUE; @@ -575,6 +579,122 @@ AhDisplayAmlOpcode ( /******************************************************************************* * + * FUNCTION: AhFindAmlTypes (entry point for AML grammar keyword search) + * + * PARAMETERS: Name - Name or prefix for an AML grammar element. + * NULL means "find all" + * + * RETURN: None + * + * DESCRIPTION: Find all AML grammar keywords that match the input Name or name + * prefix. + * + ******************************************************************************/ + +void +AhFindAmlTypes ( + char *Name) +{ + const AH_AML_TYPE *Keyword; + BOOLEAN Found = FALSE; + + + AcpiUtStrupr (Name); + + for (Keyword = AmlTypesInfo; Keyword->Name; Keyword++) + { + if (!Name) + { + printf (" %s\n", Keyword->Name); + Found = TRUE; + continue; + } + + if (*Name == '*') + { + AhDisplayAmlType (Keyword); + Found = TRUE; + continue; + } + + /* Upper case the operator name before substring compare */ + + strcpy (Gbl_Buffer, Keyword->Name); + AcpiUtStrupr (Gbl_Buffer); + + if (strstr (Gbl_Buffer, Name) == Gbl_Buffer) + { + AhDisplayAmlType (Keyword); + Found = TRUE; + } + } + + if (!Found) + { + printf ("%s, no matching AML grammar type\n", Name); + } +} + + +/******************************************************************************* + * + * FUNCTION: AhDisplayAmlType + * + * PARAMETERS: Op - Pointer to AML grammar info + * + * RETURN: None + * + * DESCRIPTION: Format and display info for an AML grammar element. + * + ******************************************************************************/ + +static void +AhDisplayAmlType ( + const AH_AML_TYPE *Op) +{ + char *Description; + + + Description = Op->Description; + printf ("%4s", " "); /* Primary indent */ + + /* Emit the entire description string */ + + while (*Description) + { + /* Description can be multiple lines, must indent each */ + + while (*Description != '\n') + { + printf ("%c", *Description); + Description++; + } + + printf ("\n"); + Description++; + + /* Do indent */ + + if (*Description) + { + printf ("%8s", " "); /* Secondary indent */ + + /* Index extra for a comment */ + + if ((Description[0] == '/') && + (Description[1] == '/')) + { + printf ("%4s", " "); + } + } + } + + printf ("\n"); +} + + +/******************************************************************************* + * * FUNCTION: AhFindAslKeywords (entry point for ASL keyword search) * * PARAMETERS: Name - Name or prefix for an ASL keyword. @@ -599,7 +719,7 @@ AhFindAslKeywords ( for (Keyword = AslKeywordInfo; Keyword->Name; Keyword++) { - if (!Name) + if (!Name || (Name[0] == '*')) { AhDisplayAslKeyword (Keyword); Found = TRUE; @@ -716,7 +836,7 @@ AhFindAslOperators ( for (Operator = AslOperatorInfo; Operator->Name; Operator++) { - if (!Name) + if (!Name || (Name[0] == '*')) { AhDisplayAslOperator (Operator); MatchCount++; @@ -931,7 +1051,7 @@ AhDisplayDeviceIds ( /* Null input name indicates "display all" */ - if (!Name) + if (!Name || (Name[0] == '*')) { printf ("ACPI and PNP Device/Hardware IDs:\n\n"); for (Info = AslDeviceIds; Info->Name; Info++) diff --git a/source/tools/acpihelp/ahgrammar.c b/source/tools/acpihelp/ahgrammar.c new file mode 100644 index 000000000..7375add1d --- /dev/null +++ b/source/tools/acpihelp/ahgrammar.c @@ -0,0 +1,361 @@ +/****************************************************************************** + * + * Module Name: ahgrammar - AML grammar items + * + *****************************************************************************/ + +/****************************************************************************** + * + * 1. Copyright Notice + * + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. + * All rights reserved. + * + * 2. License + * + * 2.1. This is your license from Intel Corp. under its intellectual property + * rights. You may have additional license terms from the party that provided + * you this software, covering your right to use that party's intellectual + * property rights. + * + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a + * copy of the source code appearing in this file ("Covered Code") an + * irrevocable, perpetual, worldwide license under Intel's copyrights in the + * base code distributed originally by Intel ("Original Intel Code") to copy, + * make derivatives, distribute, use and display any portion of the Covered + * Code in any form, with the right to sublicense such rights; and + * + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent + * license (with the right to sublicense), under only those claims of Intel + * patents that are infringed by the Original Intel Code, to make, use, sell, + * offer to sell, and import the Covered Code and derivative works thereof + * solely to the minimum extent necessary to exercise the above copyright + * license, and in no event shall the patent license extend to any additions + * to or modifications of the Original Intel Code. No other license or right + * is granted directly or by implication, estoppel or otherwise; + * + * The above copyright and patent license is granted only if the following + * conditions are met: + * + * 3. Conditions + * + * 3.1. Redistribution of Source with Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification with rights to further distribute source must include + * the above Copyright Notice, the above License, this list of Conditions, + * and the following Disclaimer and Export Compliance provision. In addition, + * Licensee must cause all Covered Code to which Licensee contributes to + * contain a file documenting the changes Licensee made to create that Covered + * Code and the date of any change. Licensee must include in that file the + * documentation of any changes made by any predecessor Licensee. Licensee + * must include a prominent statement that the modification is derived, + * directly or indirectly, from Original Intel Code. + * + * 3.2. Redistribution of Source with no Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification without rights to further distribute source must + * include the following Disclaimer and Export Compliance provision in the + * documentation and/or other materials provided with distribution. In + * addition, Licensee may not authorize further sublicense of source of any + * portion of the Covered Code, and must include terms to the effect that the + * license from Licensee to its licensee is limited to the intellectual + * property embodied in the software Licensee provides to its licensee, and + * not to intellectual property embodied in modifications its licensee may + * make. + * + * 3.3. Redistribution of Executable. Redistribution in executable form of any + * substantial portion of the Covered Code or modification must reproduce the + * above Copyright Notice, and the following Disclaimer and Export Compliance + * provision in the documentation and/or other materials provided with the + * distribution. + * + * 3.4. Intel retains all right, title, and interest in and to the Original + * Intel Code. + * + * 3.5. Neither the name Intel nor any other trademark owned or controlled by + * Intel shall be used in advertising or otherwise to promote the sale, use or + * other dealings in products derived from or relating to the Covered Code + * without prior written authorization from Intel. + * + * 4. Disclaimer and Export Compliance + * + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A + * PARTICULAR PURPOSE. + * + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY + * LIMITED REMEDY. + * + * 4.3. Licensee shall not export, either directly or indirectly, any of this + * software or system incorporating such software without first obtaining any + * required license or other approval from the U. S. Department of Commerce or + * any other agency or department of the United States Government. In the + * event Licensee exports any such software from the United States or + * re-exports any such software from a foreign destination, Licensee shall + * ensure that the distribution and export/re-export of the software is in + * compliance with all laws, regulations, orders, or other restrictions of the + * U.S. Export Administration Regulations. Licensee agrees that neither it nor + * any of its subsidiaries will export/re-export any technical data, process, + * software, or service, directly or indirectly, to any country for which the + * United States government or any agency thereof requires an export license, + * other governmental approval, or letter of assurance, without first obtaining + * such license, approval or letter. + * + *****************************************************************************/ + +#include "acpihelp.h" + +const AH_AML_TYPE AmlTypesInfo[] = +{ + {"ComputationalData", + "ComputationalData :=\n" + "ByteConst | WordConst | DWordConst | QWordConst |\n" + "String | ConstObj | RevisionOp | DefBuffer\n\n" + "DataObject := ComputationalData | DefPackage | DefVarPackage\n" + "DataRefObject := DataObject | ObjectReference | DDBHandle\n\n" + + "ByteConst := BytePrefix ByteData\n" + "BytePrefix := 0x0A\n" + "ByteList := Nothing | <ByteData ByteList>\n" + "ByteData := 0x00 - 0xFF\n\n" + + "WordConst := WordPrefix WordData\n" + "WordPrefix := 0x0B\n" + "WordData := 0x0000-0xFFFF\n\n" + + "DWordConst := DWordPrefix DWordData\n" + "DWordPrefix := 0x0C\n" + "DWordData := 0x00000000-0xFFFFFFFF\n\n" + + "QWordConst := QWordPrefix QWordData\n" + "QWordPrefix := 0x0E\n" + "QWordData := 0x0000000000000000-0xFFFFFFFFFFFFFFFF\n\n" + + "String := StringPrefix AsciiCharList NullChar\n" + "StringPrefix := 0x0D\n" + "AsciiCharList := Nothing | <AsciiChar AsciiCharList>\n" + "AsciiChar := 0x01 - 0x7F\n" + "NullChar := 0x00\n\n" + + "ConstObj := ZeroOp | OneOp | OnesOp\n\n"}, + + {"DefinitionBlock", + "DefinitionBlockHeader :=\n" + "TableSignature TableLength SpecCompliance Checksum\n" + "OemID OemTableID OemRevision CreatorID CreatorRevision\n\n" + + "TableSignature := AsciiChar AsciiChar AsciiChar AsciiChar\n" + "TableLength := DWordData\n" + "// Length of the table in bytes including\n" + "// the block header.\n\n" + + "SpecCompliance := ByteData\n" + "// The revision of the structure\n\n" + + "CheckSum := ByteData\n" + "// Byte checksum of the entire table\n\n" + + "OemID := ByteData(6)\n" + "// OEM ID of up to 6 characters. If the OEM\n" + "// ID is shorter than 6 characters, it\n" + "// can be terminated with a NULL\n" + "// character.\n\n" + + "OemTableID := ByteData(8)\n" + "// OEM Table ID of up to 8 characters. If\n" + "// the OEM Table ID is shorter than 8\n" + "// characters, it can be terminated with\n" + "// a NULL character.\n" + "OemRevision := DWordData\n" + "// OEM Table Revision\n\n" + "CreatorID := DWordData\n" + "// Vendor ID of the ASL compiler\n" + "CreatorRevision := DWordData\n" + "// Revision of the ASL compiler\n"}, + + {"FieldFlags", + "FieldFlags := ByteData\n" + "// bits 0-3: AccessType\n" + "// 0 AnyAcc\n" + "// 1 ByteAcc\n" + "// 2 WordAcc\n" + "// 3 DWordAcc\n" + "// 4 QWordAcc\n" + "// 5 BufferAcc\n" + "// 6 Reserved\n" + "// 7 Reserved\n" + "// bit 4: LockRule\n" + "// 0 NoLock\n" + "// 1 Lock\n" + "// bits 5-6: UpdateRule\n" + "// 0 Preserve\n" + "// 1 WriteAsOnes\n" + "// 2 WriteAsZeros\n" + "// bit 7:\n" + "// 0 Reserved (must be 0)\n"}, + + {"FieldList", + "FieldList := Nothing | <FieldElement FieldList>\n\n" + "FieldElement := NamedField | ReservedField | AccessField |\n" + " ExtendedAccessField | ConnectField\n\n" + "NamedField := NameSeg PkgLength\n" + "ReservedField := 0x00 PkgLength\n\n" + + "AccessField := 0x01 AccessType\n" + "AccessField := 0x01 AccessType AccessAttrib\n\n" + + "AccessType := ByteData\n" + "// Bits 0:3 - Same as AccessType bits of FieldFlags.\n" + "// Bits 4:5 - Reserved\n" + "// Bits 7:6 - 0 = AccessAttribute\n" + "// Normal Access Attributes\n" + "// 1 = AttribBytes (x)\n" + "// 2 = AttribRawBytes (x)\n" + "// 3 = AttribRawProcessBytes (x)\n" + "// Note: 'x' is encoded as bits 0:7 of the AccessAttrib byte.\n\n" + + "AccessAttrib := ByteData\n" + "// bits 0:7: Byte length\n" + "//\n" + "// If AccessType is BufferAcc for the SMB or\n" + "// GPIO OpRegions, AccessAttrib can be one of\n" + "// the following values:\n" + "// 0x02 AttribQuick\n" + "// 0x04 AttribSendReceive\n" + "// 0x06 AttribByte\n" + "// 0x08 AttribWord\n" + "// 0x0A AttribBlock\n" + "// 0x0C AttribProcessCall\n" + "// 0x0D AttribBlockProcessCall\n\n" + + "ExtendedAccessField := 0x03 AccessType ExtendedAccessAttrib AccessLength\n" + "ExtendedAccessAttrib := ByteData\n" + "// 0x0B AttribBytes\n" + "// 0x0E AttribRawBytes\n" + "// 0x0F AttribRawProcess\n\n" + + "ConnectField := 0x02 NameString> | <0x02 BufferData\n"}, + + {"MatchOpcode", + "DefMatch := MatchOp SearchPkg MatchOpcode Operand MatchOpcode Operand StartIndex\n" + "MatchOp := 0x89\n" + "SearchPkg := TermArg => Package\n" + "MatchOpcode := ByteData\n" + "// 0 MTR\n" + "// 1 MEQ\n" + "// 2 MLE\n" + "// 3 MLT\n" + "// 4 MGE\n" + "// 5 MGT\n"}, + + {"MethodFlags", + "DefMethod := MethodOp PkgLength NameString MethodFlags TermList\n" + "MethodOp := 0x14\n" + "MethodFlags := ByteData\n" + "// bit 0-2: ArgCount (0-7)\n" + "// bit 3: SerializeFlag\n" + "// 0 NotSerialized\n" + "// 1 Serialized\n" + "// bit 4-7: SyncLevel (0x00-0x0f)\n"}, + + {"Miscellaneous", + "ZeroOp := 0x00\n" + "OneOp := 0x01\n" + "OnesOp := 0xFF\n" + "RevisionOp := ExtOpPrefix 0x30\n" + "ExtOpPrefix := 0x5B\n"}, + + {"NameSeg", + "NameSeg := <LeadNameChar NameChar NameChar NameChar>\n" + "// Note: NameSegs shorter than 4 characters are filled with\n" + "// trailing underscores.\n\n" + "NameChar := DigitChar | LeadNameChar\n" + "LeadNameChar := 'A'-'Z' | '_' (0x41 - 0x5A) | (0x5F)\n" + "DigitChar := '0'-'9' (0x30 - 0x39)\n"}, + + {"NameString", + "NameString := <RootChar NamePath> | <PrefixPath NamePath>\n" + "PrefixPath := Nothing | <ParentPrefixChar PrefixPath>\n" + "RootChar := '\\' (0x5C)\n" + "ParentPrefixChar := '^' (0x5E)\n"}, + + {"NamePath", + "NamePath := NameSeg | DualNamePath | MultiNamePath | NullName\n" + "DualNamePath := DualNamePrefix NameSeg NameSeg\n" + "DualNamePrefix := 0x2E\n" + "MultiNamePath := MultiNamePrefix SegCount NameSeg(SegCount)\n" + "MultiNamePrefix := 0x2F\n" + "SegCount := ByteData\n" + "// Note: SegCount can be from 1 to 255. For example: MultiNamePrefix(35)\n" + "// is encoded as 0x2f 0x23 and followed by 35 NameSegs. So, the total\n" + "// encoding length will be 1 + 1 + (35 * 4) = 142. Notice that:\n" + "// DualNamePrefix NameSeg NameSeg has a smaller encoding than the\n" + "// encoding of: MultiNamePrefix(2) NameSeg NameSeg\n\n" + + "SimpleName := NameString | ArgObj | LocalObj\n" + "SuperName := SimpleName | DebugObj | Type6Opcode\n" + "NullName := 0x00\n" + "Target := SuperName | NullName\n"}, + + {"PkgLength", + "PkgLength := PkgLeadByte |\n" + "<PkgLeadByte ByteData> |\n" + "<PkgLeadByte ByteData ByteData> |\n" + "<PkgLeadByte ByteData ByteData ByteData>\n\n" + + "PkgLeadByte :=\n" + "bit 7-6: Count of ByteData that follows (0-3)\n" + "bit 5-4: Only used if (PkgLength < 63)\n" + "bit 3-0: Least significant package length nybble\n" + "// Note: The high 2 bits of the first byte reveal how many follow bytes\n" + "// are in the PkgLength. If the PkgLength has only one byte, bit 0 through 5\n" + "// are used to encode the package length (in other words, values 0-63). If\n" + "// the package length value is more than 63, more than one byte must be\n" + "// used for the encoding in which case bit 4 and 5 of the PkgLeadByte are\n" + "// reserved and must be zero. If the multiple bytes encoding is used, bits\n" + "// 0-3 of the PkgLeadByte become the least significant 4 bits of the\n" + "// resulting package length value. The next ByteData will become the next\n" + "// least significant 8 bits of the resulting value and so on, up to 3\n" + "// ByteData bytes. Thus, the maximum package length is 2**28.\n"}, + + {"RegionSpace", + "RegionSpace := ByteData\n" + "// 0x00 SystemMemory\n" + "// 0x01 SystemIO\n" + "// 0x02 PCI_Config\n" + "// 0x03 EmbeddedControl\n" + "// 0x04 SMBus\n" + "// 0x05 SystemCMOS\n" + "// 0x06 PciBarTarget\n" + "// 0x07 IPMI\n" + "// 0x08 GeneralPurposeIO\n" + "// 0x09 GenericSerialBus\n" + "// 0x0A Platform Communications Channel\n" + "// 0x0B-0x7E: Reserved\n" + "// 0x7F: Functional Fixed Hardware\n" + "// 0x80-0xBF: Reserved\n" + "// 0xC0-0xFF: OEM Defined\n"}, + + {"TermObj", + "TermObj := NameSpaceModifierObj | NamedObj | Type1Opcode | Type2Opcode\n" + "TermList := Nothing | <TermObj TermList>\n\n" + + "MethodInvocation := NameString TermArgList\n" + "TermArgList := Nothing | <TermArg TermArgList>\n" + "TermArg := Type2Opcode | DataObject | ArgObj | LocalObj\n\n" + + "ObjectList := Nothing | <Object ObjectList>\n" + "Object := NameSpaceModifierObj | NamedObj\n"}, + + {NULL, NULL} +}; diff --git a/source/tools/acpihelp/ahmain.c b/source/tools/acpihelp/ahmain.c index b44045ea4..b86f79fb0 100644 --- a/source/tools/acpihelp/ahmain.c +++ b/source/tools/acpihelp/ahmain.c @@ -123,9 +123,16 @@ AhDisplayUsage ( void); #define AH_UTILITY_NAME "ACPI Help Utility" -#define AH_SUPPORTED_OPTIONS "adehikmopstuv" +#define AH_SUPPORTED_OPTIONS "adeghikmopstuv" +#if defined ACPI_OPTION +#undef ACPI_OPTION +#endif + +#define ACPI_OPTION(Name, Description) \ + AcpiOsPrintf (" %-24s%s\n", Name, Description); + /****************************************************************************** * * FUNCTION: AhDisplayUsage @@ -143,21 +150,22 @@ AhDisplayUsage ( ACPI_OPTION ("-h", "Display help"); ACPI_OPTION ("-v", "Display version information"); - ACPI_USAGE_TEXT ("\nAML (ACPI Machine Language) Names and Encodings:\n"); - ACPI_OPTION ("-a [Name/Prefix]", "Find/Display both ASL operator and AML opcode name(s)"); - ACPI_OPTION ("-m [Name/Prefix]", "Find/Display AML opcode name(s)"); + ACPI_USAGE_TEXT ("\nAML Names and Encodings (ACPI Machine Language):\n"); + ACPI_OPTION ("-a [Name/Prefix | *]", "Display both ASL operator and AML opcode name(s)"); + ACPI_OPTION ("-g [Name/Prefix | *]", "Display AML grammar elements(s)"); + ACPI_OPTION ("-m [Name/Prefix | *]", "Display AML opcode name(s)"); ACPI_USAGE_TEXT ("\nACPI Values:\n"); ACPI_OPTION ("-e [HexValue]", "Decode ACPICA exception code"); ACPI_OPTION ("-o [HexValue]", "Decode hex AML opcode"); - ACPI_USAGE_TEXT ("\nASL (ACPI Source Language) Names and Symbols:\n"); - ACPI_OPTION ("-k [Name/Prefix]", "Find/Display ASL non-operator keyword(s)"); - ACPI_OPTION ("-p [Name/Prefix]", "Find/Display ASL predefined method name(s)"); - ACPI_OPTION ("-s [Name/Prefix]", "Find/Display ASL operator name(s)"); + ACPI_USAGE_TEXT ("\nASL Names and Symbols (ACPI Source Language):\n"); + ACPI_OPTION ("-k [Name/Prefix | *]", "Display ASL non-operator keyword(s)"); + ACPI_OPTION ("-p [Name/Prefix | *]", "Display ASL predefined method name(s)"); + ACPI_OPTION ("-s [Name/Prefix | *]", "Display ASL operator name(s)"); - ACPI_USAGE_TEXT ("\nOther ACPI Names:\n"); - ACPI_OPTION ("-i [Name/Prefix]", "Find/Display ACPI/PNP Hardware ID(s)"); + ACPI_USAGE_TEXT ("\nOther miscellaneous ACPI Names:\n"); + ACPI_OPTION ("-i [Name/Prefix | *]", "Display ACPI/PNP Hardware ID(s)"); ACPI_OPTION ("-d", "Display iASL Preprocessor directives"); ACPI_OPTION ("-t", "Display supported ACPI tables"); ACPI_OPTION ("-u", "Display ACPI-related UUIDs"); @@ -217,6 +225,11 @@ main ( DecodeType = AH_DECODE_EXCEPTION; break; + case 'g': + + DecodeType = AH_DECODE_AML_TYPE; + break; + case 'i': DecodeType = AH_DISPLAY_DEVICE_IDS; @@ -289,6 +302,11 @@ main ( AhDecodeAmlOpcode (Name); break; + case AH_DECODE_AML_TYPE: + + AhFindAmlTypes (Name); + break; + case AH_DECODE_PREDEFINED_NAME: AhFindPredefinedNames (Name); |