ACK: [PATCH] ACPICA: Update to version 20160729

ivanhu ivan.hu at canonical.com
Tue Aug 16 09:33:33 UTC 2016



On 2016年08月15日 16:02, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
>
> https://lists.acpica.org/pipermail/devel/2016-July/000940.html
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>   src/acpica/Makefile.am                             |    1 -
>   src/acpica/source/common/acfileio.c                |    9 +-
>   src/acpica/source/common/acgetline.c               |    2 -
>   src/acpica/source/common/adisasm.c                 |    2 -
>   src/acpica/source/common/ahtable.c                 |    1 +
>   src/acpica/source/common/cmfsize.c                 |   13 +-
>   src/acpica/source/common/dmtable.c                 |    7 +
>   src/acpica/source/common/dmtables.c                |    4 +-
>   src/acpica/source/common/dmtbdump.c                |  184 ++-
>   src/acpica/source/common/dmtbinfo.c                |   41 +-
>   src/acpica/source/common/getopt.c                  |    4 +-
>   src/acpica/source/compiler/aslcompiler.h           |    1 -
>   src/acpica/source/compiler/aslcompiler.y           |  613 +++++++---
>   src/acpica/source/compiler/aslcstyle.y             |   33 +-
>   src/acpica/source/compiler/aslhelpers.y            |  358 ++++++
>   src/acpica/source/compiler/aslkeywords.y           |  424 +++++++
>   src/acpica/source/compiler/aslmain.c               |   28 +-
>   src/acpica/source/compiler/aslparser.y             |    6 +-
>   src/acpica/source/compiler/aslprimaries.y          | 1232 ++++++++++++++++++++
>   src/acpica/source/compiler/aslresources.y          |  621 +---------
>   src/acpica/source/compiler/aslrules.y              | 1208 ++-----------------
>   src/acpica/source/compiler/asltokens.y             |   42 +-
>   src/acpica/source/compiler/asltypes.y              |   51 +-
>   src/acpica/source/compiler/dtcompiler.h            |    1 +
>   src/acpica/source/compiler/dttable.c               |   70 +-
>   src/acpica/source/compiler/dttemplate.h            |   10 +
>   src/acpica/source/compiler/dtutils.c               |    6 +
>   src/acpica/source/components/debugger/dbfileio.c   |   19 +-
>   src/acpica/source/components/tables/tbfadt.c       |   10 +-
>   src/acpica/source/components/tables/tbutils.c      |    2 +-
>   src/acpica/source/components/tables/tbxface.c      |    4 +-
>   src/acpica/source/components/tables/tbxfload.c     |    4 +-
>   src/acpica/source/components/tables/tbxfroot.c     |    4 +-
>   src/acpica/source/components/utilities/utbuffer.c  |   26 +-
>   src/acpica/source/components/utilities/utdebug.c   |   30 -
>   src/acpica/source/components/utilities/utinit.c    |    2 +-
>   src/acpica/source/components/utilities/utpredef.c  |    2 -
>   src/acpica/source/components/utilities/utprint.c   |  121 +-
>   src/acpica/source/components/utilities/uttrack.c   |    4 +-
>   src/acpica/source/components/utilities/utxface.c   |    2 +-
>   src/acpica/source/components/utilities/utxfinit.c  |    6 +-
>   src/acpica/source/include/acapps.h                 |   14 +-
>   src/acpica/source/include/acconfig.h               |    4 +
>   src/acpica/source/include/acdisasm.h               |    7 +-
>   src/acpica/source/include/acglobal.h               |    1 +
>   src/acpica/source/include/acpiosxf.h               |   67 +-
>   src/acpica/source/include/acpixf.h                 |   27 +-
>   src/acpica/source/include/actables.h               |    2 +-
>   src/acpica/source/include/actbl.h                  |  164 +--
>   src/acpica/source/include/actypes.h                |   10 -
>   src/acpica/source/include/acutils.h                |   42 -
>   src/acpica/source/include/platform/acenv.h         |   90 +-
>   src/acpica/source/include/platform/acenvex.h       |   21 +-
>   src/acpica/source/include/platform/acgcc.h         |   17 +-
>   src/acpica/source/include/platform/acgccex.h       |  130 +++
>   src/acpica/source/include/platform/aclinux.h       |   14 +-
>   src/acpica/source/include/platform/aclinuxex.h     |    2 +-
>   .../source/os_specific/service_layers/oslibcfs.c   |  330 ------
>   .../source/os_specific/service_layers/osunixxf.c   |    3 -
>   src/acpica/source/tools/acpiexec/aecommon.h        |    5 -
>   src/acpica/source/tools/acpiexec/aeinitfile.c      |    3 +-
>   61 files changed, 3352 insertions(+), 2809 deletions(-)
>   create mode 100644 src/acpica/source/compiler/aslhelpers.y
>   create mode 100644 src/acpica/source/compiler/aslkeywords.y
>   create mode 100644 src/acpica/source/compiler/aslprimaries.y
>   create mode 100644 src/acpica/source/include/platform/acgccex.h
>   delete mode 100644 src/acpica/source/os_specific/service_layers/oslibcfs.c
>
> diff --git a/src/acpica/Makefile.am b/src/acpica/Makefile.am
> index 28b458c..fb3c29a 100644
> --- a/src/acpica/Makefile.am
> +++ b/src/acpica/Makefile.am
> @@ -67,7 +67,6 @@ libfwtsacpica_la_SOURCES =				\
>   	fwts_acpica.c					\
>   	osunixxf_munged.c				\
>   	dscontrol_munged.c				\
> -	source/os_specific/service_layers/oslibcfs.c	\
>   	source/components/debugger/dbcmds.c		\
>   	source/components/debugger/dbdisply.c		\
>   	source/components/debugger/dbexec.c		\
> diff --git a/src/acpica/source/common/acfileio.c b/src/acpica/source/common/acfileio.c
> index c00580f..b7d5039 100644
> --- a/src/acpica/source/common/acfileio.c
> +++ b/src/acpica/source/common/acfileio.c
> @@ -115,10 +115,9 @@
>   
>   #include "acpi.h"
>   #include "accommon.h"
> -#include "acapps.h"
>   #include "actables.h"
>   #include "acutils.h"
> -#include <errno.h>
> +#include "acapps.h"
>   
>   #define _COMPONENT          ACPI_UTILITIES
>           ACPI_MODULE_NAME    ("acfileio")
> @@ -170,7 +169,7 @@ AcGetAllTablesFromFile (
>       File = fopen (Filename, "rb");
>       if (!File)
>       {
> -        perror ("Could not open input file");
> +        fprintf (stderr, "Could not open input file: %s\n", Filename);
>           if (errno == ENOENT)
>           {
>               return (AE_NOT_EXIST);
> @@ -352,7 +351,7 @@ AcGetOneTableFromFile (
>   
>       /* Allocate a buffer for the entire table */
>   
> -    Table = AcpiOsAllocate ((size_t) TableHeader.Length);
> +    Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length);
>       if (!Table)
>       {
>           return (AE_NO_MEMORY);
> @@ -460,7 +459,7 @@ AcValidateTableHeader (
>       long                    TableOffset)
>   {
>       ACPI_TABLE_HEADER       TableHeader;
> -    size_t                  Actual;
> +    ACPI_SIZE               Actual;
>       long                    OriginalOffset;
>       UINT32                  FileSize;
>       UINT32                  i;
> diff --git a/src/acpica/source/common/acgetline.c b/src/acpica/source/common/acgetline.c
> index dfc0653..a28aaf7 100644
> --- a/src/acpica/source/common/acgetline.c
> +++ b/src/acpica/source/common/acgetline.c
> @@ -119,8 +119,6 @@
>   #include "acparser.h"
>   #include "acdebug.h"
>   
> -#include <stdio.h>
> -
>   /*
>    * This is an os-independent implementation of line-editing services needed
>    * by the AcpiExec utility. It uses getchar() and putchar() and the existing
> diff --git a/src/acpica/source/common/adisasm.c b/src/acpica/source/common/adisasm.c
> index 520863c..2d46c50 100644
> --- a/src/acpica/source/common/adisasm.c
> +++ b/src/acpica/source/common/adisasm.c
> @@ -121,8 +121,6 @@
>   #include "acparser.h"
>   #include "acapps.h"
>   
> -#include <stdio.h>
> -
>   
>   #define _COMPONENT          ACPI_TOOLS
>           ACPI_MODULE_NAME    ("adisasm")
> diff --git a/src/acpica/source/common/ahtable.c b/src/acpica/source/common/ahtable.c
> index 021ae33..59ddc83 100644
> --- a/src/acpica/source/common/ahtable.c
> +++ b/src/acpica/source/common/ahtable.c
> @@ -196,6 +196,7 @@ const AH_TABLE      AcpiSupportedTables[] =
>       {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"},
>       {ACPI_SIG_PCCT, "Platform Communications Channel Table"},
>       {ACPI_SIG_PMTT, "Platform Memory Topology Table"},
> +    {ACPI_SIG_RASF, "RAS Features Table"},
>       {ACPI_RSDP_NAME,"Root System Description Pointer"},
>       {ACPI_SIG_RSDT, "Root System Description Table"},
>       {ACPI_SIG_S3PT, "S3 Performance Table"},
> diff --git a/src/acpica/source/common/cmfsize.c b/src/acpica/source/common/cmfsize.c
> index accdf22..2139e4b 100644
> --- a/src/acpica/source/common/cmfsize.c
> +++ b/src/acpica/source/common/cmfsize.c
> @@ -116,7 +116,6 @@
>   #include "acpi.h"
>   #include "accommon.h"
>   #include "acapps.h"
> -#include <stdio.h>
>   
>   #define _COMPONENT          ACPI_TOOLS
>           ACPI_MODULE_NAME    ("cmfsize")
> @@ -146,19 +145,19 @@ CmGetFileSize (
>   
>       /* Save the current file pointer, seek to EOF to obtain file size */
>   
> -    CurrentOffset = AcpiOsGetFileOffset (File);
> +    CurrentOffset = ftell (File);
>       if (CurrentOffset < 0)
>       {
>           goto OffsetError;
>       }
>   
> -    Status = AcpiOsSetFileOffset (File, 0, ACPI_FILE_END);
> +    Status = fseek (File, 0, SEEK_END);
>       if (ACPI_FAILURE (Status))
>       {
>           goto SeekError;
>       }
>   
> -    FileSize = AcpiOsGetFileOffset (File);
> +    FileSize = ftell (File);
>       if (FileSize < 0)
>       {
>           goto OffsetError;
> @@ -166,7 +165,7 @@ CmGetFileSize (
>   
>       /* Restore original file pointer */
>   
> -    Status = AcpiOsSetFileOffset (File, CurrentOffset, ACPI_FILE_BEGIN);
> +    Status = fseek (File, CurrentOffset, SEEK_SET);
>       if (ACPI_FAILURE (Status))
>       {
>           goto SeekError;
> @@ -176,10 +175,10 @@ CmGetFileSize (
>   
>   
>   OffsetError:
> -    AcpiLogError ("Could not get file offset");
> +    fprintf (stderr, "Could not get file offset\n");
>       return (ACPI_UINT32_MAX);
>   
>   SeekError:
> -    AcpiLogError ("Could not set file offset");
> +    fprintf (stderr, "Could not set file offset\n");
>       return (ACPI_UINT32_MAX);
>   }
> diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
> index 51d91f8..ff0603d 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -430,6 +430,7 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
>       {ACPI_SIG_NFIT, AcpiDmTableInfoNfit,    AcpiDmDumpNfit, DtCompileNfit,  TemplateNfit},
>       {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  TemplatePcct},
>       {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  TemplatePmtt},
> +    {ACPI_SIG_RASF, AcpiDmTableInfoRasf,    NULL,           NULL,           TemplateRasf},
>       {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  TemplateRsdt},
>       {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           TemplateS3pt},
>       {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           TemplateSbst},
> @@ -916,6 +917,11 @@ AcpiDmDumpTable (
>               ByteLength = 10;
>               break;
>   
> +        case ACPI_DMT_BUF12:
> +
> +            ByteLength = 12;
> +            break;
> +
>           case ACPI_DMT_BUF16:
>           case ACPI_DMT_UUID:
>   
> @@ -1078,6 +1084,7 @@ AcpiDmDumpTable (
>   
>           case ACPI_DMT_BUF7:
>           case ACPI_DMT_BUF10:
> +        case ACPI_DMT_BUF12:
>           case ACPI_DMT_BUF16:
>           case ACPI_DMT_BUF128:
>               /*
> diff --git a/src/acpica/source/common/dmtables.c b/src/acpica/source/common/dmtables.c
> index 813ba83..06897dc 100644
> --- a/src/acpica/source/common/dmtables.c
> +++ b/src/acpica/source/common/dmtables.c
> @@ -114,14 +114,12 @@
>    *****************************************************************************/
>   
>   #include "aslcompiler.h"
> -#include "acapps.h"
>   #include "acdispat.h"
>   #include "acnamesp.h"
>   #include "actables.h"
>   #include "acparser.h"
> +#include "acapps.h"
>   
> -#include <stdio.h>
> -#include <time.h>
>   
>   #define _COMPONENT          ACPI_TOOLS
>           ACPI_MODULE_NAME    ("dmtables")
> diff --git a/src/acpica/source/common/dmtbdump.c b/src/acpica/source/common/dmtbdump.c
> index ae48276..fe4ce2f 100644
> --- a/src/acpica/source/common/dmtbdump.c
> +++ b/src/acpica/source/common/dmtbdump.c
> @@ -124,12 +124,31 @@
>           ACPI_MODULE_NAME    ("dmtbdump")
>   
>   
> -/* Local prototypes */
> +/* Table of revision-dependent FADT sizes */
>   
> -static void
> -AcpiDmValidateFadtLength (
> -    UINT32                  Revision,
> -    UINT32                  Length);
> +static const UINT32         FadtRevisionLength [ACPI_FADT_MAX_VERSION + 1] =
> +{
> +    0,                      /* 0 - illegal */
> +    ACPI_FADT_V1_SIZE,      /* 1 - ACPI 1.0 */
> +    0,                      /* 2 - illegal */
> +    ACPI_FADT_V3_SIZE,      /* 3 - ACPI 2.0 */
> +    ACPI_FADT_V4_SIZE,      /* 4 - ACPI 3.0 and ACPI 4.0 */
> +    ACPI_FADT_V5_SIZE,      /* 5 - ACPI 5.0 */
> +    ACPI_FADT_V6_SIZE       /* 6 - ACPI 6.0 */
> +};
> +
> +/* Table of revision-dependent FADT info tables */
> +
> +ACPI_DMTABLE_INFO           *FadtRevisionInfo [ACPI_FADT_MAX_VERSION + 1] =
> +{
> +    NULL,                   /* 0 - illegal */
> +    AcpiDmTableInfoFadt1,   /* 1 - ACPI 1.0 */
> +    NULL,                   /* 2 - illegal */
> +    AcpiDmTableInfoFadt3,   /* 3 - ACPI 2.0 */
> +    AcpiDmTableInfoFadt4,   /* 4 - ACPI 3.0 and ACPI 4.0 */
> +    AcpiDmTableInfoFadt5,   /* 5 - ACPI 5.0 */
> +    AcpiDmTableInfoFadt6    /* 6 - ACPI 6.0 */
> +};
>   
>   
>   /*******************************************************************************
> @@ -419,6 +438,11 @@ AcpiDmDumpXsdt (
>    *
>    * DESCRIPTION: Format the contents of a FADT
>    *
> + *              Check the FADT revision against the expected table length for
> + *              that revision. Issue a warning if the length is not what was
> + *              expected. This seems to be such a common BIOS bug that the
> + *              FADT revision has been rendered virtually meaningless.
> + *
>    * NOTE:        We cannot depend on the FADT version to indicate the actual
>    *              contents of the FADT because of BIOS bugs. The table length
>    *              is the only reliable indicator.
> @@ -430,142 +454,72 @@ AcpiDmDumpFadt (
>       ACPI_TABLE_HEADER       *Table)
>   {
>       ACPI_STATUS             Status;
> +    UINT8                   FadtRevision;
> +    UINT32                  ExpectedLength;
> +    UINT32                  i;
>   
>   
> -    /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */
> +    FadtRevision = Table->Revision;
>   
> -    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> -        AcpiDmTableInfoFadt1);
> -    if (ACPI_FAILURE (Status))
> +    /* FADT revision/length validation */
> +
> +    if ((FadtRevision == 0) ||
> +        (FadtRevision == 2))
>       {
> +        AcpiOsPrintf (
> +            "// ACPI Warning: Invalid or unsupported FADT revision: %u\n",
> +            FadtRevision);
>           return;
>       }
>   
> -    /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */
> -
> -    if ((Table->Length > ACPI_FADT_V1_SIZE) &&
> -        (Table->Length <= ACPI_FADT_V2_SIZE))
> +    if (FadtRevision > ACPI_FADT_MAX_VERSION)
>       {
> -        Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> -            AcpiDmTableInfoFadt2);
> -        if (ACPI_FAILURE (Status))
> +        AcpiOsPrintf ("// ACPI Warning: Revision %u is not fully supported, "
> +            "disassembling known fields (up to revision %u)\n\n",
> +            FadtRevision, ACPI_FADT_MAX_VERSION);
> +    }
> +    else
> +    {
> +        ExpectedLength = FadtRevisionLength[FadtRevision];
> +        if (Table->Length != ExpectedLength)
>           {
> -            return;
> +            AcpiOsPrintf (
> +                "// ACPI Warning: Input FADT revision %X does not match "
> +                "expected length: found 0x%X expected 0x%X\n",
> +                FadtRevision, Table->Length, ExpectedLength);
>           }
>       }
>   
> -    /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */
> -
> -    else if (Table->Length > ACPI_FADT_V2_SIZE)
> +    /*
> +     * Dump the input table on a per-version basis, but is actually
> +     * based upon the length of the table. Table length must
> +     * be larger than the required length of the previous version.
> +     */
> +    for (i = 1; i <= ACPI_FADT_MAX_VERSION; i++)
>       {
> -        Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> -            AcpiDmTableInfoFadt3);
> -        if (ACPI_FAILURE (Status))
> +        if (!FadtRevisionLength[i]) /* Skip any empty slots */
>           {
> -            return;
> +            continue;
>           }
>   
> -        /* Check for FADT revision 5 fields and up (ACPI 5.0+) */
> +        /* Dump the fields specific to FADT revision[i] */
>   
> -        if (Table->Length > ACPI_FADT_V3_SIZE)
> +        Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> +            FadtRevisionInfo[i]);
> +        if (ACPI_FAILURE (Status))
>           {
> -            Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> -                AcpiDmTableInfoFadt5);
> -            if (ACPI_FAILURE (Status))
> -            {
> -                return;
> -            }
> +            return;
>           }
>   
> -        /* Check for FADT revision 6 fields and up (ACPI 6.0+) */
> -
> -        if (Table->Length > ACPI_FADT_V3_SIZE)
> +        if (Table->Length <= FadtRevisionLength[i])
>           {
> -            Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> -                AcpiDmTableInfoFadt6);
> -            if (ACPI_FAILURE (Status))
> -            {
> -                return;
> -            }
> +            break;  /* End of table */
>           }
>       }
>   
> -    /* Validate various fields in the FADT, including length */
> +    /* Build a local FADT to test some FADT values */
>   
>       AcpiTbCreateLocalFadt (Table, Table->Length);
> -
> -    /* Validate FADT length against the revision */
> -
> -    AcpiDmValidateFadtLength (Table->Revision, Table->Length);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiDmValidateFadtLength
> - *
> - * PARAMETERS:  Revision            - FADT revision (Header->Revision)
> - *              Length              - FADT length (Header->Length
> - *
> - * RETURN:      None
> - *
> - * DESCRIPTION: Check the FADT revision against the expected table length for
> - *              that revision. Issue a warning if the length is not what was
> - *              expected. This seems to be such a common BIOS bug that the
> - *              FADT revision has been rendered virtually meaningless.
> - *
> - ******************************************************************************/
> -
> -static void
> -AcpiDmValidateFadtLength (
> -    UINT32                  Revision,
> -    UINT32                  Length)
> -{
> -    UINT32                  ExpectedLength;
> -
> -
> -    switch (Revision)
> -    {
> -    case 0:
> -
> -        AcpiOsPrintf ("// ACPI Warning: Invalid FADT revision: 0\n");
> -        return;
> -
> -    case 1:
> -
> -        ExpectedLength = ACPI_FADT_V1_SIZE;
> -        break;
> -
> -    case 2:
> -
> -        ExpectedLength = ACPI_FADT_V2_SIZE;
> -        break;
> -
> -    case 3:
> -    case 4:
> -
> -        ExpectedLength = ACPI_FADT_V3_SIZE;
> -        break;
> -
> -    case 5:
> -
> -        ExpectedLength = ACPI_FADT_V5_SIZE;
> -        break;
> -
> -    default:
> -
> -        return;
> -    }
> -
> -    if (Length == ExpectedLength)
> -    {
> -        return;
> -    }
> -
> -    AcpiOsPrintf (
> -        "\n// ACPI Warning: FADT revision %X does not match length: "
> -        "found %X expected %X\n",
> -        Revision, Length, ExpectedLength);
>   }
>   
>   
> diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c
> index 5520da2..e920724 100644
> --- a/src/acpica/source/common/dmtbinfo.c
> +++ b/src/acpica/source/common/dmtbinfo.c
> @@ -178,6 +178,7 @@
>   #define ACPI_NFIT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_NFIT,f)
>   #define ACPI_PCCT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f)
>   #define ACPI_PMTT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f)
> +#define ACPI_RASF_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f)
>   #define ACPI_S3PT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f)
>   #define ACPI_SBST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f)
>   #define ACPI_SLIT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIT,f)
> @@ -471,7 +472,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFacs[] =
>    *
>    ******************************************************************************/
>   
> -/* ACPI 1.0 FADT (Version 1) */
> +/* FADT version 1 (ACPI 1.0) */
>   
>   ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt1[] =
>   {
> @@ -557,18 +558,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt1[] =
>       ACPI_DMT_TERMINATOR
>   };
>   
> -/* ACPI 1.0 MS Extensions (FADT version 2) */
> -
> -ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt2[] =
> -{
> -    {ACPI_DMT_GAS,      ACPI_FADT_OFFSET (ResetRegister),           "Reset Register", 0},
> -    {ACPI_DMT_UINT8,    ACPI_FADT_OFFSET (ResetValue),              "Value to cause reset", 0},
> -    {ACPI_DMT_UINT16,   ACPI_FADT_OFFSET (ArmBootFlags),            "Reserved", 0},
> -    {ACPI_DMT_UINT8,    ACPI_FADT_OFFSET (MinorRevision),           "Reserved", 0},
> -    ACPI_DMT_TERMINATOR
> -};
> -
> -/* ACPI 2.0+ Extensions (FADT version 3, 4, and 5) */
> +/* FADT version 3 (ACPI 2.0) */
>   
>   ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt3[] =
>   {
> @@ -592,16 +582,23 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt3[] =
>       ACPI_DMT_TERMINATOR
>   };
>   
> -/* ACPI 5.0 Extensions (FADT version 5) */
> +/* FADT version 4 (ACPI 3.0 and ACPI 4.0) */
>   
> -ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt5[] =
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt4[] =
>   {
>       {ACPI_DMT_GAS,      ACPI_FADT_OFFSET (SleepControl),            "Sleep Control Register", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* FADT version 5 (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt5[] =
> +{
>       {ACPI_DMT_GAS,      ACPI_FADT_OFFSET (SleepStatus),             "Sleep Status Register", 0},
>       ACPI_DMT_TERMINATOR
>   };
>   
> -/* ACPI 6.0 Extensions (FADT version 6) */
> +/* FADT version 6 (ACPI 6.0) */
>   
>   ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt6[] =
>   {
> @@ -2512,6 +2509,18 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPmtt2[] =
>   
>   /*******************************************************************************
>    *
> + * RASF -  RAS Feature table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoRasf[] =
> +{
> +    {ACPI_DMT_BUF12,    ACPI_RASF_OFFSET (ChannelId[0]),            "Channel ID", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/*******************************************************************************
> + *
>    * S3PT - S3 Performance Table
>    *
>    ******************************************************************************/
> diff --git a/src/acpica/source/common/getopt.c b/src/acpica/source/common/getopt.c
> index 15eadc2..d309789 100644
> --- a/src/acpica/source/common/getopt.c
> +++ b/src/acpica/source/common/getopt.c
> @@ -129,7 +129,7 @@
>   #include "acapps.h"
>   
>   #define ACPI_OPTION_ERROR(msg, badchar) \
> -    if (AcpiGbl_Opterr) {AcpiLogError ("%s%c\n", msg, badchar);}
> +    if (AcpiGbl_Opterr) {fprintf (stderr, "%s%c\n", msg, badchar);}
>   
>   
>   int                 AcpiGbl_Opterr = 1;
> @@ -173,7 +173,7 @@ AcpiGetoptArgument (
>       }
>       else if (++AcpiGbl_Optind >= argc)
>       {
> -        ACPI_OPTION_ERROR ("Option requires an argument: -", 'v');
> +        ACPI_OPTION_ERROR ("\nOption requires an argument", 0);
>   
>           CurrentCharPtr = 1;
>           return (-1);
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 4d02852..64a9ae7 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -134,7 +134,6 @@
>   
>   #include <stdio.h>
>   #include <stdlib.h>
> -#include <stdarg.h>
>   #include <string.h>
>   #include <errno.h>
>   #include <ctype.h>
> diff --git a/src/acpica/source/compiler/aslcompiler.y b/src/acpica/source/compiler/aslcompiler.y
> index fa5c64b..4dd34d4 100644
> --- a/src/acpica/source/compiler/aslcompiler.y
> +++ b/src/acpica/source/compiler/aslcompiler.y
> @@ -138,6 +138,7 @@ void *
>   AslLocalAllocate (
>       unsigned int            Size);
>   
> +
>   /* Bison/yacc configuration */
>   
>   #define static
> @@ -171,7 +172,7 @@ AslLocalAllocate (
>    * These shift/reduce conflicts are expected. There should be zero
>    * reduce/reduce conflicts.
>    */
> -%expect 101
> +%expect 102
>   
>   /*! [Begin] no source code translation */
>   
> @@ -195,6 +196,16 @@ AslLocalAllocate (
>    *
>    *****************************************************************************/
>   
> +/*
> + * Most tokens are defined to return <i>, which is a UINT64.
> + *
> + * These tokens return <s>, a pointer to the associated lexed string:
> + *
> + *  PARSEOP_NAMESEG
> + *  PARSEOP_NAMESTRING
> + *  PARSEOP_STRING_LITERAL
> + *  PARSEOP_STRUCTURE_NAMESTRING
> + */
>   %token <i> PARSEOP_ACCESSAS
>   %token <i> PARSEOP_ACCESSATTRIB_BLOCK
>   %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
> @@ -608,12 +619,42 @@ AslLocalAllocate (
>   %token <i> PARSEOP_FPRINTF
>   %token <i> PARSEOP_FOR
>   
> +/* Structures */
> +
> +%token <i> PARSEOP_STRUCTURE
> +%token <s> PARSEOP_STRUCTURE_NAMESTRING
> +%token <i> PARSEOP_STRUCTURE_TAG
> +%token <i> PARSEOP_STRUCTURE_ELEMENT
> +%token <i> PARSEOP_STRUCTURE_INSTANCE
> +%token <i> PARSEOP_STRUCTURE_REFERENCE
> +%token <i> PARSEOP_STRUCTURE_POINTER
> +
> +/* Top level */
> +
> +%token <i> PARSEOP_ASL_CODE
> +
> +
> +/*******************************************************************************
> + *
> + * Tokens below are not in the aslmap.c file
> + *
> + ******************************************************************************/
> +
> +
> +/* Tokens below this are not in the aslmap.c file */
> +
>   /* Specific parentheses tokens are not used at this time */
>              /* PARSEOP_EXP_PAREN_OPEN */
>              /* PARSEOP_EXP_PAREN_CLOSE */
>   
> +/* ASL+ variable creation */
> +
> +%token <i> PARSEOP_INTEGER_TYPE
> +%token <i> PARSEOP_STRING_TYPE
> +%token <i> PARSEOP_BUFFER_TYPE
> +%token <i> PARSEOP_PACKAGE_TYPE
> +%token <i> PARSEOP_REFERENCE_TYPE
>   
> -%token <i> PARSEOP_ASL_CODE
>   
>   /*
>    * Special functions. These should probably stay at the end of this
> @@ -863,7 +904,6 @@ AslLocalAllocate (
>   %type <n> PackageElement
>   %type <n> PackageList
>   %type <n> PackageTerm
> -%type <n> VarPackageLengthTerm
>   
>   /* Macros */
>   
> @@ -935,9 +975,9 @@ AslLocalAllocate (
>   %type <n> OptionalAddressRange
>   %type <n> OptionalBitsPerByte
>   %type <n> OptionalBuffer_Last
> -%type <n> OptionalBufferLength
>   %type <n> OptionalByteConstExpr
>   %type <n> OptionalCount
> +%type <n> OptionalDataCount
>   %type <n> OptionalDecodeType
>   %type <n> OptionalDevicePolarity
>   %type <n> OptionalDWordConstExpr
> @@ -954,6 +994,7 @@ AslLocalAllocate (
>   %type <n> OptionalObjectTypeKeyword
>   %type <n> OptionalParameterTypePackage
>   %type <n> OptionalParameterTypesPackage
> +%type <n> OptionalParentheses
>   %type <n> OptionalParityType
>   %type <n> OptionalPredicate
>   %type <n> OptionalQWordConstExpr
> @@ -978,12 +1019,57 @@ AslLocalAllocate (
>   %type <n> OptionalXferSize
>   
>   /*
> - * C-style expression parser
> + * ASL+ (C-style) parser
>    */
> +
> +/* Expressions and symbolic operators */
> +
>   %type <n> Expression
>   %type <n> EqualsTerm
>   %type <n> IndexExpTerm
>   
> +/* ASL+ Named object declaration support */
> +/*
> +%type <n> NameTermAslPlus
> +
> +%type <n> BufferBegin
> +%type <n> BufferEnd
> +%type <n> PackageBegin
> +%type <n> PackageEnd
> +%type <n> OptionalLength
> +*/
> +/* ASL+ Structure declarations */
> +/*
> +%type <n> StructureTerm
> +%type <n> StructureTermBegin
> +%type <n> StructureType
> +%type <n> StructureTag
> +%type <n> StructureElementList
> +%type <n> StructureElement
> +%type <n> StructureElementType
> +%type <n> OptionalStructureElementType
> +%type <n> StructureId
> +*/
> +/* Structure instantiantion */
> +/*
> +%type <n> StructureInstanceTerm
> +%type <n> StructureTagReference
> +%type <n> StructureInstanceEnd
> +*/
> +/* Pseudo-instantiantion for method Args/Locals */
> +/*
> +%type <n> MethodStructureTerm
> +%type <n> LocalStructureName
> +*/
> +/* Direct structure references via the Index operator */
> +/*
> +%type <n> StructureReference
> +%type <n> StructureIndexTerm
> +%type <n> StructurePointerTerm
> +%type <n> StructurePointerReference
> +%type <n> OptionalDefinePointer
> +*/
> +
>   %%
>   
>   /* Production rules */
> @@ -1001,7 +1087,8 @@ AslLocalAllocate (
>    * to handle output from preprocessors
>    */
>   AslCode
> -    : DefinitionBlockList           {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
> +    : DefinitionBlockList           {$<n>$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
>       | error                         {YYABORT; $$ = NULL;}
>       ;
>   
> @@ -1034,7 +1121,8 @@ DefinitionBlockTerm
>           String ','
>           DWordConst
>           ')'                         {TrSetEndLineNumber ($<n>3);}
> -            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
> +            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,
> +                                        $4,$6,$8,$10,$12,$14,$18);}
>       ;
>   
>   DefinitionBlockList
> @@ -1043,12 +1131,36 @@ DefinitionBlockList
>           DefinitionBlockList         {$$ = TrLinkPeerNodes (2, $1,$2);}
>       ;
>   
> +/* Allow IO, DMA, IRQ Resource macro and FOR macro names to also be used as identifiers */
> +
> +NameString
> +    : NameSeg                       {}
> +    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) $1);}
> +    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
> +    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
> +    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
> +    | PARSEOP_FOR                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "FOR");}
> +    ;
> +/*
> +NameSeg
> +    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT)
> +                                            TrNormalizeNameSeg ($1));}
> +    ;
> +*/
> +
> +NameSeg
> +    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
> +                                            (ACPI_NATIVE_INT) AslCompilerlval.s);}
> +    ;
> +
> +
>   SuperName
>       : NameString                    {}
>       | ArgTerm                       {}
>       | LocalTerm                     {}
>       | DebugTerm                     {}
>       | Type6Opcode                   {}
> +    ;
>   
>   Target
>       :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
> @@ -1062,6 +1174,8 @@ TermArg
>       | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
>       | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
>       | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
> +
> +
>       ;
>   
>   /*
> @@ -1086,9 +1200,26 @@ OptionalCount
>       | ',' TermArg                   {$$ = $2;}
>       ;
>   
> -VarPackageLengthTerm
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | TermArg                       {$$ = $1;}
> +/*
> + * Data count for buffers and packages (byte count for buffers,
> + * element count for packages).
> + */
> +OptionalDataCount
> +
> +        /* Legacy ASL */
> +    :                               {$$ = NULL;}
> +    | '(' TermArg ')'               {$$ = $2;}
> +    | '('  ')'                      {$$ = NULL;}
> +
> +        /* C-style (ASL+) -- adds equals term */
> +
> +    |  PARSEOP_EXP_EQUALS           {$$ = NULL;}
> +
> +    | '(' TermArg ')'
> +        PARSEOP_EXP_EQUALS          {$$ = $2;}
> +
> +    | '('  ')' String
> +        PARSEOP_EXP_EQUALS          {$$ = NULL;}
>       ;
>   
>   
> @@ -1143,6 +1274,7 @@ Object
>       : CompilerDirective             {}
>       | NamedObject                   {}
>       | NameSpaceModifier             {}
> +//    | StructureTerm                 {}
>       ;
>   
>   PackageList
> @@ -1175,7 +1307,8 @@ ParameterTypePackageList
>   
>   OptionalParameterTypePackage
>       :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
> +    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
>       ;
>   
>       /* Rules for specifying the types for method arguments */
> @@ -1194,17 +1327,22 @@ ParameterTypesPackageList
>   
>   OptionalParameterTypesPackage
>       :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
> +    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
>       ;
>   
>       /* ACPI 3.0 -- allow semicolons between terms */
>   
>   TermList
>       :                               {$$ = NULL;}
> -    | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> -    | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> -    | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> -    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> +    | TermList Term                 {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> +    | TermList Term ';'             {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> +    | TermList ';' Term             {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> +    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
>       ;
>   
>   Term
> @@ -1312,29 +1450,37 @@ QWordConst
>    * constant folding code in the node AmlLength field.
>    */
>   ByteConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 1);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 1);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
>       | ByteConst                     {}
>       ;
>   
>   WordConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 2);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 2);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
>       | WordConst                     {}
>       ;
>   
>   DWordConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 4);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 4);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
>       | DWordConst                    {}
>       ;
>   
>   QWordConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 8);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 8);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
>       | QWordConst                    {}
>       ;
> @@ -1355,11 +1501,13 @@ ConstExprTerm
>       ;
>   
>   Integer
> -    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
> +    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER,
> +                                        AslCompilerlval.i);}
>       ;
>   
>   String
> -    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
> +    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
> +                                        (ACPI_NATIVE_INT) AslCompilerlval.s);}
>       ;
>   
>   
> @@ -1400,6 +1548,7 @@ NamedObject
>   NameSpaceModifier
>       : AliasTerm                     {}
>       | NameTerm                      {}
> +//    | NameTermAslPlus               {}
>       | ScopeTerm                     {}
>       ;
>   
> @@ -1413,6 +1562,7 @@ ObjectTypeName
>       | RefOfTerm                     {}
>       | DerefOfTerm                   {}
>       | IndexTerm                     {}
> +
>   /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
>       ;
>   
> @@ -1478,6 +1628,8 @@ Type2IntegerOpcode                  /* "Type3" opcodes */
>       | FromBCDTerm                   {}
>       | IncTerm                       {}
>       | IndexTerm                     {}
> +//    | StructureIndexTerm            {}
> +//    | StructurePointerTerm          {}
>       | LAndTerm                      {}
>       | LEqualTerm                    {}
>       | LGreaterTerm                  {}
> @@ -1538,6 +1690,8 @@ Type4Opcode
>       ;
>   */
>   
> +/* Type 5 opcodes are a subset of Type2 opcodes, and return a constant */
> +
>   Type5Opcode
>       : ResourceTemplateTerm          {}
>       | UnicodeTerm                   {}
> @@ -1550,12 +1704,66 @@ Type6Opcode
>       | DerefOfTerm                   {}
>       | IndexTerm                     {}
>       | IndexExpTerm                  {}
> +//    | StructureIndexTerm            {}
> +//    | StructurePointerTerm          {}
>       | MethodInvocationTerm          {}
>       ;
>   
>   
>   /*******************************************************************************
>    *
> + * ASL Helper Terms
> + *
> + ******************************************************************************/
> +
> +AmlPackageLengthTerm
> +    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,
> +                                        (ACPI_PARSE_OBJECT *) $1);}
> +    ;
> +
> +NameStringItem
> +    : ',' NameString                {$$ = $2;}
> +    | ',' error                     {$$ = AslDoError (); yyclearin;}
> +    ;
> +
> +TermArgItem
> +    : ',' TermArg                   {$$ = $2;}
> +    | ',' error                     {$$ = AslDoError (); yyclearin;}
> +    ;
> +
> +OptionalReference
> +    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
> +    | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
> +    | ',' TermArg                   {$$ = $2;}
> +    ;
> +
> +OptionalReturnArg
> +    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
> +                                            NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
> +    | TermArg                       {$$ = $1;}
> +    ;
> +
> +OptionalSerializeRuleKeyword
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' SerializeRuleKeyword      {$$ = $2;}
> +    ;
> +
> +OptionalTermArg
> +    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> +    | TermArg                       {$$ = $1;}
> +    ;
> +
> +OptionalWordConst
> +    :                               {$$ = NULL;}
> +    | WordConst                     {$$ = $1;}
> +    ;
> +
> +
> +
> +
> +/*******************************************************************************
> + *
>    * ASL Primary Terms
>    *
>    ******************************************************************************/
> @@ -1627,7 +1835,8 @@ BankFieldTerm
>           ',' LockRuleKeyword
>           ',' UpdateRuleKeyword
>           ')' '{'
> -            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
> +            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,
> +                                        $4,$5,$6,$8,$10,$12,$15);}
>       | PARSEOP_BANKFIELD '('
>           error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1641,12 +1850,9 @@ BreakPointTerm
>       ;
>   
>   BufferTerm
> -    : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
> -        OptionalBufferLength
> -        ')' '{'
> -            BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_BUFFER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    : PARSEOP_BUFFER                {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
> +        OptionalDataCount
> +        '{' BufferTermData '}'      {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
>       ;
>   
>   BufferTermData
> @@ -1674,7 +1880,8 @@ ConcatTerm
>       ;
>   
>   ConcatResTerm
> -    : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
> +    : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (
> +                                            PARSEOP_CONCATENATERESTEMPLATE);}
>           TermArg
>           TermArgItem
>           Target
> @@ -1690,10 +1897,11 @@ ConnectionTerm
>       | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
>           ResourceMacroTerm
>           ')'                         {$$ = TrLinkChildren ($<n>3, 1,
> -                                            TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
> -                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> -                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> -                                                $4));}
> +                                        TrLinkChildren (
> +                                            TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
> +                                            TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> +                                            TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> +                                            $4));}
>       | PARSEOP_CONNECTION '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1715,7 +1923,8 @@ CopyObjectTerm
>       : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
>           TermArg
>           ',' SimpleTarget
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
> +                                        TrSetNodeFlags ($6, NODE_IS_TARGET));}
>       | PARSEOP_COPYOBJECT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1725,7 +1934,8 @@ CreateBitFieldTerm
>           TermArg
>           TermArgItem
>           NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_CREATEBITFIELD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1735,7 +1945,8 @@ CreateByteFieldTerm
>           TermArg
>           TermArgItem
>           NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_CREATEBYTEFIELD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1745,7 +1956,8 @@ CreateDWordFieldTerm
>           TermArg
>           TermArgItem
>           NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_CREATEDWORDFIELD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1756,7 +1968,8 @@ CreateFieldTerm
>           TermArgItem
>           TermArgItem
>           NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,
> +                                        TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_CREATEFIELD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1766,7 +1979,8 @@ CreateQWordFieldTerm
>           TermArg
>           TermArgItem
>           NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_CREATEQWORDFIELD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1776,7 +1990,8 @@ CreateWordFieldTerm
>           TermArg
>           TermArgItem
>           NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_CREATEWORDFIELD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1787,7 +2002,8 @@ DataRegionTerm
>           TermArgItem
>           TermArgItem
>           TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
>       | PARSEOP_DATATABLEREGION '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1823,7 +2039,8 @@ DeviceTerm
>       : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
>           NameString
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
>       | PARSEOP_DEVICE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1878,7 +2095,8 @@ ElseTerm
>   EventTerm
>       : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
>           NameString
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
>       | PARSEOP_EVENT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1976,7 +2194,8 @@ FunctionTerm
>           OptionalParameterTypePackage
>           OptionalParameterTypesPackage
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
>                                           TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
>                                           TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
>                                           TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
> @@ -2001,7 +2220,8 @@ IncludeTerm
>       ;
>   
>   IncludeEndTerm
> -    : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
> +    : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);
> +                                        TrSetCurrentFilename ($$);}
>       ;
>   
>   IncTerm
> @@ -2057,7 +2277,8 @@ LGreaterEqualTerm
>       : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
>           TermArg
>           TermArgItem
> -        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> +        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
> +                                        TrLinkChildren ($<n>3,2,$4,$5));}
>       | PARSEOP_LGREATEREQUAL '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2075,7 +2296,8 @@ LLessEqualTerm
>       : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
>           TermArg
>           TermArgItem
> -        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> +        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
> +                                        TrLinkChildren ($<n>3,2,$4,$5));}
>       | PARSEOP_LLESSEQUAL '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2093,7 +2315,8 @@ LNotEqualTerm
>       : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
>           TermArg
>           TermArgItem
> -        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> +        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
> +                                        TrLinkChildren ($<n>3,2,$4,$5));}
>       | PARSEOP_LNOTEQUAL '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2170,7 +2393,9 @@ MethodTerm
>           OptionalParameterTypePackage
>           OptionalParameterTypesPackage
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $5,$7,$8,$9,$10,$13);}
>       | PARSEOP_METHOD '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2210,7 +2435,8 @@ MutexTerm
>       : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
>           NameString
>           ',' ByteConstExpr
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
>       | PARSEOP_MUTEX '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2219,7 +2445,8 @@ NameTerm
>       : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
>           NameString
>           ',' DataObject
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
>       | PARSEOP_NAME '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2288,7 +2515,9 @@ OpRegionTerm
>           ',' OpRegionSpaceIdTerm
>           TermArgItem
>           TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $6,$7,$8);}
>       | PARSEOP_OPERATIONREGION '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2309,13 +2538,9 @@ OrTerm
>       ;
>   
>   PackageTerm
> -    : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
> -        VarPackageLengthTerm
> -        ')' '{'
> -            PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_PACKAGE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> +    : PARSEOP_PACKAGE               {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
> +        OptionalDataCount
> +        '{' PackageList '}'         {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
>   
>   PowerResTerm
>       : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
> @@ -2323,7 +2548,9 @@ PowerResTerm
>           ',' ByteConstExpr
>           ',' WordConstExpr
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,4,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $6,$8,$11);}
>       | PARSEOP_POWERRESOURCE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2351,7 +2578,9 @@ ProcessorTerm
>           OptionalDWordConstExpr
>           OptionalByteConstExpr
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,5,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $6,$7,$8,$11);}
>       | PARSEOP_PROCESSOR '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2372,7 +2601,8 @@ RawDataBufferTerm
>   RefOfTerm
>       : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
>           SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,
> +                                        TrSetNodeFlags ($4, NODE_IS_TARGET));}
>       | PARSEOP_REFOF '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2397,7 +2627,10 @@ ReturnTerm
>       : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
>           OptionalReturnArg
>           ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
> +    | PARSEOP_RETURN                {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_RETURN),1,
> +                                        TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
> +                                            NODE_IS_NULL_RETURN));}
>       | PARSEOP_RETURN '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2406,7 +2639,8 @@ ScopeTerm
>       : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
>           NameString
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
>       | PARSEOP_SCOPE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2467,7 +2701,8 @@ StoreTerm
>       : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
>           TermArg
>           ',' SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
> +                                        TrSetNodeFlags ($6, NODE_IS_TARGET));}
>       | PARSEOP_STORE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2481,6 +2716,7 @@ SubtractTerm
>       | PARSEOP_SUBTRACT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> +
>   SwitchTerm
>       : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
>           TermArg
> @@ -2495,7 +2731,8 @@ ThermalZoneTerm
>       : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
>           NameString
>           ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
>       | PARSEOP_THERMALZONE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2503,7 +2740,8 @@ ThermalZoneTerm
>   TimerTerm
>       : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
>           ')'                         {$$ = TrLinkChildren ($<n>3,0);}
> -    | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
> +    | PARSEOP_TIMER                 {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_TIMER),0);}
>       | PARSEOP_TIMER '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -2639,59 +2877,6 @@ WhileTerm
>       ;
>   
>   
> -/*******************************************************************************
> - *
> - * ASL Helper Terms
> - *
> - ******************************************************************************/
> -
> -AmlPackageLengthTerm
> -    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
> -    ;
> -
> -NameStringItem
> -    : ',' NameString                {$$ = $2;}
> -    | ',' error                     {$$ = AslDoError (); yyclearin;}
> -    ;
> -
> -TermArgItem
> -    : ',' TermArg                   {$$ = $2;}
> -    | ',' error                     {$$ = AslDoError (); yyclearin;}
> -    ;
> -
> -OptionalReference
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
> -    | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
> -    | ',' TermArg                   {$$ = $2;}
> -    ;
> -
> -OptionalReturnArg
> -    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
> -OptionalSerializeRuleKeyword
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' SerializeRuleKeyword      {$$ = $2;}
> -    ;
> -
> -OptionalTermArg
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
> -OptionalBufferLength
> -    :                               {$$ = NULL;}
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
> -OptionalWordConst
> -    :                               {$$ = NULL;}
> -    | WordConst                     {$$ = $1;}
> -    ;
> -
> -
>   
>   /*******************************************************************************
>    *
> @@ -2731,6 +2916,13 @@ OptionalWordConst
>    *  13)     = += -= *= /= %= <<= >>= &= ^= |=
>    */
>   
> +
> +/*******************************************************************************
> + *
> + * Basic operations for math and logical expressions.
> + *
> + ******************************************************************************/
> +
>   Expression
>   
>       /* Unary operators */
> @@ -2789,33 +2981,43 @@ Expression
>       | TermArg PARSEOP_EXP_LOGICAL_OR    {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
>           TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
>   
> -        /* Parentheses */
> +    /* Parentheses */
>   
>       | '(' TermArg ')'                   { $$ = $2;}
>   
> -        /* Index term -- "= BUF1[5]" on right-hand side of an equals (source) */
> +    /* Index term -- "= BUF1[5]" on right-hand side of an equals (source) */
>   
> -    | SuperName PARSEOP_EXP_INDEX_LEFT TermArg PARSEOP_EXP_INDEX_RIGHT
> -                                        {$$ = TrCreateLeafNode (PARSEOP_INDEX);
> +    | SuperName PARSEOP_EXP_INDEX_LEFT
> +        TermArg PARSEOP_EXP_INDEX_RIGHT {$$ = TrCreateLeafNode (PARSEOP_INDEX);
>                                           TrLinkChildren ($$,3,$1,$3,TrCreateNullTarget ());}
>       ;
>   
> -        /* Index term -- "BUF1[5] = " on left-hand side of an equals (target) */
> +    /* Index term -- "BUF1[5] = " on left-hand side of an equals (target) */
>   
>   IndexExpTerm
>   
> -    : SuperName PARSEOP_EXP_INDEX_LEFT TermArg PARSEOP_EXP_INDEX_RIGHT
> -                                        {$$ = TrCreateLeafNode (PARSEOP_INDEX);
> +    : SuperName PARSEOP_EXP_INDEX_LEFT
> +        TermArg PARSEOP_EXP_INDEX_RIGHT {$$ = TrCreateLeafNode (PARSEOP_INDEX);
>                                           TrLinkChildren ($$,3,$1,$3,TrCreateNullTarget ());}
>       ;
>   
> +
> +/*******************************************************************************
> + *
> + * All assignment-type operations -- math and logical. Includes simple
> + * assignment and compound assignments.
> + *
> + ******************************************************************************/
> +
>   EqualsTerm
>   
> -    /* All assignment-type operations */
> +    /* Simple Store() operation */
>   
>       : SuperName PARSEOP_EXP_EQUALS
>           TermArg                         {$$ = TrCreateAssignmentNode ($1, $3);}
>   
> +    /* Compound assignments -- Add (operand, operand, target) */
> +
>       | TermArg PARSEOP_EXP_ADD_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
>           TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
>                                               TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
> @@ -3167,6 +3369,8 @@ XferTypeKeyword
>       ;
>   
>   
> +
> +
>   /*******************************************************************************
>    *
>    * ASL Resource Template Terms
> @@ -3178,15 +3382,20 @@ XferTypeKeyword
>    * Also, insert the EndTag at the end of the template.
>    */
>   ResourceTemplateTerm
> -    : PARSEOP_RESOURCETEMPLATE '(' ')'
> +    : PARSEOP_RESOURCETEMPLATE OptionalParentheses
>           '{'
>           ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
>                                             TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
>                                             TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> -                                          $5,
> +                                          $4,
>                                             TrCreateLeafNode (PARSEOP_ENDTAG));}
>       ;
>   
> +OptionalParentheses
> +    :                               {$$ = NULL;}
> +    | '(' ')'                       {$$ = NULL;}
> +    ;
> +
>   ResourceMacroList
>       :                               {$$ = NULL;}
>       | ResourceMacroList
> @@ -3261,7 +3470,8 @@ DWordIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
>       | PARSEOP_DWORDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3284,7 +3494,8 @@ DWordMemoryTerm
>           OptionalNameString
>           OptionalAddressRange
>           OptionalType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,16,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
>       | PARSEOP_DWORDMEMORY '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3305,7 +3516,8 @@ DWordSpaceTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
>       | PARSEOP_DWORDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3333,7 +3545,8 @@ ExtendedIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
>       | PARSEOP_EXTENDEDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3355,7 +3568,8 @@ ExtendedMemoryTerm
>           OptionalNameString
>           OptionalAddressRange
>           OptionalType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
>       | PARSEOP_EXTENDEDMEMORY '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3375,7 +3589,8 @@ ExtendedSpaceTerm
>           ',' QWordConstExpr
>           OptionalQWordConstExpr
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,13,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
>       | PARSEOP_EXTENDEDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3414,7 +3629,8 @@ GpioIntTerm
>           OptionalNameString          /* 15: DescriptorName */
>           OptionalBuffer_Last         /* 16: VendorData */
>           ')' '{'
> -            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
> +            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,
> +                                        $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
>       | PARSEOP_GPIO_INT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3432,7 +3648,8 @@ GpioIoTerm
>           OptionalNameString          /* 14: DescriptorName */
>           OptionalBuffer_Last         /* 15: VendorData */
>           ')' '{'
> -            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
> +            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,
> +                                        $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
>       | PARSEOP_GPIO_IO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3448,7 +3665,8 @@ I2cSerialBusTerm
>           OptionalResourceType        /* 12: ResourceType */
>           OptionalNameString          /* 13: DescriptorName */
>           OptionalBuffer_Last         /* 14: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
> +        ')'                         {$$ = TrLinkChildren ($<n>3,10,
> +                                        $4,$5,$7,$8,$10,$11,$12,$13,
>                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
>       | PARSEOP_I2C_SERIALBUS '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
> @@ -3466,8 +3684,8 @@ I2cSerialBusTermV2
>           OptionalNameString          /* 13: DescriptorName */
>           OptionalShareType           /* 14: Share */
>           OptionalBuffer_Last         /* 15: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
> -                                        $14,$15);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,10,
> +                                        $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
>       | PARSEOP_I2C_SERIALBUS_V2 '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3482,7 +3700,8 @@ InterruptTerm
>           OptionalStringData
>           OptionalNameString_Last
>           ')' '{'
> -            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
> +            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,
> +                                        $4,$6,$8,$9,$10,$11,$12,$15);}
>       | PARSEOP_INTERRUPT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3575,7 +3794,8 @@ QWordIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
>       | PARSEOP_QWORDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3598,7 +3818,8 @@ QWordMemoryTerm
>           OptionalNameString
>           OptionalAddressRange
>           OptionalType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,16,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
>       | PARSEOP_QWORDMEMORY '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3619,7 +3840,8 @@ QWordSpaceTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
>       | PARSEOP_QWORDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3652,7 +3874,8 @@ SpiSerialBusTerm
>           OptionalResourceType        /* 19: ResourceType */
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalBuffer_Last         /* 21: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
>                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
>       | PARSEOP_SPI_SERIALBUS '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
> @@ -3674,8 +3897,8 @@ SpiSerialBusTermV2
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalShareType           /* 21: Share */
>           OptionalBuffer_Last         /* 22: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
> -                                        $21,$22);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
>       | PARSEOP_SPI_SERIALBUS_V2 '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3714,7 +3937,8 @@ UartSerialBusTerm
>           OptionalResourceType        /* 19: ResourceType */
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalBuffer_Last         /* 21: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
>                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
>       | PARSEOP_UART_SERIALBUS '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
> @@ -3737,8 +3961,8 @@ UartSerialBusTermV2
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalShareType           /* 21: Share */
>           OptionalBuffer_Last         /* 22: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
> -                                        $21,$22);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
>       | PARSEOP_UART_SERIALBUS_V2 '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3775,7 +3999,8 @@ WordBusNumberTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,12,
> +                                        $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
>       | PARSEOP_WORDBUSNUMBER '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3797,7 +4022,8 @@ WordIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
>       | PARSEOP_WORDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -3818,27 +4044,13 @@ WordSpaceTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
>       | PARSEOP_WORDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
>   
>   
> -/******* Object References ***********************************************/
> -
> -/* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
> -
> -NameString
> -    : NameSeg                       {}
> -    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
> -    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
> -    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
> -    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
> -    ;
> -
> -NameSeg
> -    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
> -    ;
>   
>   
>   /*******************************************************************************
> @@ -3848,9 +4060,12 @@ NameSeg
>    ******************************************************************************/
>   
>   OptionalBusMasterKeyword
> -    : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> -    | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> -    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
> +    : ','                                   {$$ = TrCreateLeafNode (
> +                                                PARSEOP_BUSMASTERTYPE_MASTER);}
> +    | ',' PARSEOP_BUSMASTERTYPE_MASTER      {$$ = TrCreateLeafNode (
> +                                                PARSEOP_BUSMASTERTYPE_MASTER);}
> +    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER   {$$ = TrCreateLeafNode (
> +                                                PARSEOP_BUSMASTERTYPE_NOTMASTER);}
>       ;
>   
>   OptionalAccessAttribTerm
> @@ -3861,8 +4076,10 @@ OptionalAccessAttribTerm
>       ;
>   
>   OptionalAccessSize
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
> -    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
> +    :                               {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_BYTECONST, 0);}
> +    | ','                           {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_BYTECONST, 0);}
>       | ',' ByteConstExpr             {$$ = $2;}
>       ;
>   
> @@ -3926,8 +4143,12 @@ OptionalIoRestriction
>       ;
>   
>   OptionalListString
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> -    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> +    :                               {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_STRING_LITERAL,
> +                                        ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> +    | ','                           {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_STRING_LITERAL,
> +                                        ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
>       | ',' TermArg                   {$$ = $2;}
>       ;
>   
> @@ -3959,12 +4180,14 @@ OptionalNameString_Last
>       ;
>   
>   OptionalNameString_First
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_ZERO);}
>       | NameString                    {$$ = $1;}
>       ;
>   
>   OptionalObjectTypeKeyword
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_OBJECTTYPE_UNK);}
>       | ',' ObjectTypeKeyword         {$$ = $2;}
>       ;
>   
> @@ -3985,19 +4208,25 @@ OptionalRangeType
>       ;
>   
>   OptionalReadWriteKeyword
> -    :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> -    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> -    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
> +    :                                   {$$ = TrCreateLeafNode (
> +                                            PARSEOP_READWRITETYPE_BOTH);}
> +    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (
> +                                            PARSEOP_READWRITETYPE_BOTH);}
> +    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (
> +                                            PARSEOP_READWRITETYPE_READONLY);}
>       ;
>   
>   OptionalResourceType_First
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_RESOURCETYPE_CONSUMER);}
>       | ResourceTypeKeyword           {$$ = $1;}
>       ;
>   
>   OptionalResourceType
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> -    | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | ','                           {$$ = TrCreateLeafNode (
> +                                        PARSEOP_RESOURCETYPE_CONSUMER);}
>       | ',' ResourceTypeKeyword       {$$ = $2;}
>       ;
>   
> @@ -4057,8 +4286,10 @@ OptionalWordConstExpr
>       ;
>   
>   OptionalXferSize
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> -    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> +    :                               {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_XFERSIZE_32, 2);}
> +    | ','                           {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_XFERSIZE_32, 2);}
>       | ',' XferSizeKeyword           {$$ = $2;}
>       ;
>   
> diff --git a/src/acpica/source/compiler/aslcstyle.y b/src/acpica/source/compiler/aslcstyle.y
> index f510b87..305d60d 100644
> --- a/src/acpica/source/compiler/aslcstyle.y
> +++ b/src/acpica/source/compiler/aslcstyle.y
> @@ -154,6 +154,13 @@ NoEcho('
>    *  13)     = += -= *= /= %= <<= >>= &= ^= |=
>    */
>   
> +
> +/*******************************************************************************
> + *
> + * Basic operations for math and logical expressions.
> + *
> + ******************************************************************************/
> +
>   Expression
>   
>       /* Unary operators */
> @@ -212,33 +219,43 @@ Expression
>       | TermArg PARSEOP_EXP_LOGICAL_OR    {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
>           TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
>   
> -        /* Parentheses */
> +    /* Parentheses */
>   
>       | '(' TermArg ')'                   { $$ = $2;}
>   
> -        /* Index term -- "= BUF1[5]" on right-hand side of an equals (source) */
> +    /* Index term -- "= BUF1[5]" on right-hand side of an equals (source) */
>   
> -    | SuperName PARSEOP_EXP_INDEX_LEFT TermArg PARSEOP_EXP_INDEX_RIGHT
> -                                        {$$ = TrCreateLeafNode (PARSEOP_INDEX);
> +    | SuperName PARSEOP_EXP_INDEX_LEFT
> +        TermArg PARSEOP_EXP_INDEX_RIGHT {$$ = TrCreateLeafNode (PARSEOP_INDEX);
>                                           TrLinkChildren ($$,3,$1,$3,TrCreateNullTarget ());}
>       ;
>   
> -        /* Index term -- "BUF1[5] = " on left-hand side of an equals (target) */
> +    /* Index term -- "BUF1[5] = " on left-hand side of an equals (target) */
>   
>   IndexExpTerm
>   
> -    : SuperName PARSEOP_EXP_INDEX_LEFT TermArg PARSEOP_EXP_INDEX_RIGHT
> -                                        {$$ = TrCreateLeafNode (PARSEOP_INDEX);
> +    : SuperName PARSEOP_EXP_INDEX_LEFT
> +        TermArg PARSEOP_EXP_INDEX_RIGHT {$$ = TrCreateLeafNode (PARSEOP_INDEX);
>                                           TrLinkChildren ($$,3,$1,$3,TrCreateNullTarget ());}
>       ;
>   
> +
> +/*******************************************************************************
> + *
> + * All assignment-type operations -- math and logical. Includes simple
> + * assignment and compound assignments.
> + *
> + ******************************************************************************/
> +
>   EqualsTerm
>   
> -    /* All assignment-type operations */
> +    /* Simple Store() operation */
>   
>       : SuperName PARSEOP_EXP_EQUALS
>           TermArg                         {$$ = TrCreateAssignmentNode ($1, $3);}
>   
> +    /* Compound assignments -- Add (operand, operand, target) */
> +
>       | TermArg PARSEOP_EXP_ADD_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
>           TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
>                                               TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
> diff --git a/src/acpica/source/compiler/aslhelpers.y b/src/acpica/source/compiler/aslhelpers.y
> new file mode 100644
> index 0000000..ed96eba
> --- /dev/null
> +++ b/src/acpica/source/compiler/aslhelpers.y
> @@ -0,0 +1,358 @@
> +NoEcho('
> +/******************************************************************************
> + *
> + * Module Name: aslhelpers.y - helper and option terms
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 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.
> + *
> + *****************************************************************************/
> +
> +')
> +
> +
> +/*******************************************************************************
> + *
> + * ASL Helper Terms
> + *
> + ******************************************************************************/
> +
> +OptionalBusMasterKeyword
> +    : ','                                   {$$ = TrCreateLeafNode (
> +                                                PARSEOP_BUSMASTERTYPE_MASTER);}
> +    | ',' PARSEOP_BUSMASTERTYPE_MASTER      {$$ = TrCreateLeafNode (
> +                                                PARSEOP_BUSMASTERTYPE_MASTER);}
> +    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER   {$$ = TrCreateLeafNode (
> +                                                PARSEOP_BUSMASTERTYPE_NOTMASTER);}
> +    ;
> +
> +OptionalAccessAttribTerm
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' ByteConstExpr             {$$ = $2;}
> +    | ',' AccessAttribKeyword       {$$ = $2;}
> +    ;
> +
> +OptionalAccessSize
> +    :                               {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_BYTECONST, 0);}
> +    | ','                           {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_BYTECONST, 0);}
> +    | ',' ByteConstExpr             {$$ = $2;}
> +    ;
> +
> +OptionalAddressingMode
> +    : ','                           {$$ = NULL;}
> +    | ',' AddressingModeKeyword     {$$ = $2;}
> +    ;
> +
> +OptionalAddressRange
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' AddressKeyword            {$$ = $2;}
> +    ;
> +
> +OptionalBitsPerByte
> +    : ','                           {$$ = NULL;}
> +    | ',' BitsPerByteKeyword        {$$ = $2;}
> +    ;
> +
> +OptionalBuffer_Last
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' RawDataBufferTerm         {$$ = $2;}
> +    ;
> +
> +OptionalByteConstExpr
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' ByteConstExpr             {$$ = $2;}
> +    ;
> +
> +OptionalDecodeType
> +    : ','                           {$$ = NULL;}
> +    | ',' DecodeKeyword             {$$ = $2;}
> +    ;
> +
> +OptionalDevicePolarity
> +    : ','                           {$$ = NULL;}
> +    | ',' DevicePolarityKeyword     {$$ = $2;}
> +    ;
> +
> +OptionalDWordConstExpr
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' DWordConstExpr            {$$ = $2;}
> +    ;
> +
> +OptionalEndian
> +    : ','                           {$$ = NULL;}
> +    | ',' EndianKeyword             {$$ = $2;}
> +    ;
> +
> +OptionalFlowControl
> +    : ','                           {$$ = NULL;}
> +    | ',' FlowControlKeyword        {$$ = $2;}
> +    ;
> +
> +OptionalIoRestriction
> +    : ','                           {$$ = NULL;}
> +    | ',' IoRestrictionKeyword      {$$ = $2;}
> +    ;
> +
> +OptionalListString
> +    :                               {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_STRING_LITERAL,
> +                                        ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> +    | ','                           {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_STRING_LITERAL,
> +                                        ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> +    | ',' TermArg                   {$$ = $2;}
> +    ;
> +
> +OptionalMaxType
> +    : ','                           {$$ = NULL;}
> +    | ',' MaxKeyword                {$$ = $2;}
> +    ;
> +
> +OptionalMemType
> +    : ','                           {$$ = NULL;}
> +    | ',' MemTypeKeyword            {$$ = $2;}
> +    ;
> +
> +OptionalMinType
> +    : ','                           {$$ = NULL;}
> +    | ',' MinKeyword                {$$ = $2;}
> +    ;
> +
> +OptionalNameString
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' NameString                {$$ = $2;}
> +    ;
> +
> +OptionalNameString_Last
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' NameString                {$$ = $2;}
> +    ;
> +
> +OptionalNameString_First
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_ZERO);}
> +    | NameString                    {$$ = $1;}
> +    ;
> +
> +OptionalObjectTypeKeyword
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_OBJECTTYPE_UNK);}
> +    | ',' ObjectTypeKeyword         {$$ = $2;}
> +    ;
> +
> +OptionalParityType
> +    : ','                           {$$ = NULL;}
> +    | ',' ParityTypeKeyword         {$$ = $2;}
> +    ;
> +
> +OptionalQWordConstExpr
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' QWordConstExpr            {$$ = $2;}
> +    ;
> +
> +OptionalRangeType
> +    : ','                           {$$ = NULL;}
> +    | ',' RangeTypeKeyword          {$$ = $2;}
> +    ;
> +
> +OptionalReadWriteKeyword
> +    :                                   {$$ = TrCreateLeafNode (
> +                                            PARSEOP_READWRITETYPE_BOTH);}
> +    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (
> +                                            PARSEOP_READWRITETYPE_BOTH);}
> +    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (
> +                                            PARSEOP_READWRITETYPE_READONLY);}
> +    ;
> +
> +OptionalResourceType_First
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | ResourceTypeKeyword           {$$ = $1;}
> +    ;
> +
> +OptionalResourceType
> +    :                               {$$ = TrCreateLeafNode (
> +                                        PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | ','                           {$$ = TrCreateLeafNode (
> +                                        PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | ',' ResourceTypeKeyword       {$$ = $2;}
> +    ;
> +
> +OptionalSlaveMode
> +    : ','                           {$$ = NULL;}
> +    | ',' SlaveModeKeyword          {$$ = $2;}
> +    ;
> +
> +OptionalShareType
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' ShareTypeKeyword          {$$ = $2;}
> +    ;
> +
> +OptionalShareType_First
> +    :                               {$$ = NULL;}
> +    | ShareTypeKeyword              {$$ = $1;}
> +    ;
> +
> +OptionalStopBits
> +    : ','                           {$$ = NULL;}
> +    | ',' StopBitsKeyword           {$$ = $2;}
> +    ;
> +
> +OptionalStringData
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' StringData                {$$ = $2;}
> +    ;
> +
> +OptionalTranslationType_Last
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' TranslationKeyword        {$$ = $2;}
> +    ;
> +
> +OptionalType
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' TypeKeyword               {$$ = $2;}
> +    ;
> +
> +OptionalType_Last
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' TypeKeyword               {$$ = $2;}
> +    ;
> +
> +OptionalWireMode
> +    : ','                           {$$ = NULL;}
> +    | ',' WireModeKeyword           {$$ = $2;}
> +    ;
> +
> +OptionalWordConstExpr
> +    : ','                           {$$ = NULL;}
> +    | ',' WordConstExpr             {$$ = $2;}
> +    ;
> +
> +OptionalXferSize
> +    :                               {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_XFERSIZE_32, 2);}
> +    | ','                           {$$ = TrCreateValuedLeafNode (
> +                                        PARSEOP_XFERSIZE_32, 2);}
> +    | ',' XferSizeKeyword           {$$ = $2;}
> +    ;
> diff --git a/src/acpica/source/compiler/aslkeywords.y b/src/acpica/source/compiler/aslkeywords.y
> new file mode 100644
> index 0000000..644a1a1
> --- /dev/null
> +++ b/src/acpica/source/compiler/aslkeywords.y
> @@ -0,0 +1,424 @@
> +NoEcho('
> +/******************************************************************************
> + *
> + * Module Name: aslkeywords.y - Rules for resource descriptor keywords
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 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.
> + *
> + *****************************************************************************/
> +
> +')
> +
> +/*******************************************************************************
> + *
> + * ASL Parameter Keyword Terms
> + *
> + ******************************************************************************/
> +
> +AccessAttribKeyword
> +    : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
> +    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
> +    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
> +    | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
> +    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
> +    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
> +    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
> +    | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
> +        ByteConst
> +        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
> +        ByteConst
> +        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
> +        ByteConst
> +        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    ;
> +
> +AccessTypeKeyword
> +    : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
> +    | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
> +    | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
> +    | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
> +    | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
> +    | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
> +    ;
> +
> +AddressingModeKeyword
> +    : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
> +    | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
> +    ;
> +
> +AddressKeyword
> +    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
> +    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
> +    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
> +    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
> +    ;
> +
> +AddressSpaceKeyword
> +    : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
> +    | RegionSpaceKeyword                    {}
> +    ;
> +
> +BitsPerByteKeyword
> +    : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
> +    | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
> +    | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
> +    | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
> +    | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
> +    ;
> +
> +ClockPhaseKeyword
> +    : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
> +    | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
> +    ;
> +
> +ClockPolarityKeyword
> +    : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
> +    | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
> +    ;
> +
> +DecodeKeyword
> +    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
> +    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
> +    ;
> +
> +DevicePolarityKeyword
> +    : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
> +    | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
> +    ;
> +
> +DMATypeKeyword
> +    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
> +    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
> +    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
> +    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
> +    ;
> +
> +EndianKeyword
> +    : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
> +    | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
> +    ;
> +
> +FlowControlKeyword
> +    : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
> +    | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
> +    | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
> +    ;
> +
> +InterruptLevel
> +    : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
> +    | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
> +    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
> +    ;
> +
> +InterruptTypeKeyword
> +    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
> +    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
> +    ;
> +
> +IODecodeKeyword
> +    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
> +    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
> +    ;
> +
> +IoRestrictionKeyword
> +    : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
> +    | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
> +    | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
> +    | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
> +    ;
> +
> +LockRuleKeyword
> +    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
> +    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
> +    ;
> +
> +MatchOpKeyword
> +    : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
> +    | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
> +    | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
> +    | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
> +    | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
> +    | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
> +    ;
> +
> +MaxKeyword
> +    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
> +    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
> +    ;
> +
> +MemTypeKeyword
> +    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
> +    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
> +    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
> +    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
> +    ;
> +
> +MinKeyword
> +    : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
> +    | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
> +    ;
> +
> +ObjectTypeKeyword
> +    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> +    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
> +    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
> +    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
> +    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
> +    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
> +    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
> +    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
> +    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
> +    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
> +    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
> +    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
> +    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
> +    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
> +    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
> +    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
> +    ;
> +
> +ParityTypeKeyword
> +    : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
> +    | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
> +    | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
> +    | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
> +    | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
> +    ;
> +
> +PinConfigByte
> +    : PinConfigKeyword                      {$$ = $1;}
> +    | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> +    ;
> +
> +PinConfigKeyword
> +    : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
> +    | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
> +    | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
> +    | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
> +    ;
> +
> +PldKeyword
> +    : PARSEOP_PLD_REVISION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
> +    | PARSEOP_PLD_IGNORECOLOR               {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
> +    | PARSEOP_PLD_RED                       {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
> +    | PARSEOP_PLD_GREEN                     {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
> +    | PARSEOP_PLD_BLUE                      {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
> +    | PARSEOP_PLD_WIDTH                     {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
> +    | PARSEOP_PLD_HEIGHT                    {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
> +    | PARSEOP_PLD_USERVISIBLE               {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
> +    | PARSEOP_PLD_DOCK                      {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
> +    | PARSEOP_PLD_LID                       {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
> +    | PARSEOP_PLD_PANEL                     {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
> +    | PARSEOP_PLD_VERTICALPOSITION          {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
> +    | PARSEOP_PLD_HORIZONTALPOSITION        {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
> +    | PARSEOP_PLD_SHAPE                     {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
> +    | PARSEOP_PLD_GROUPORIENTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
> +    | PARSEOP_PLD_GROUPTOKEN                {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
> +    | PARSEOP_PLD_GROUPPOSITION             {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
> +    | PARSEOP_PLD_BAY                       {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
> +    | PARSEOP_PLD_EJECTABLE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
> +    | PARSEOP_PLD_EJECTREQUIRED             {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
> +    | PARSEOP_PLD_CABINETNUMBER             {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
> +    | PARSEOP_PLD_CARDCAGENUMBER            {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
> +    | PARSEOP_PLD_REFERENCE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
> +    | PARSEOP_PLD_ROTATION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
> +    | PARSEOP_PLD_ORDER                     {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
> +    | PARSEOP_PLD_RESERVED                  {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
> +    | PARSEOP_PLD_VERTICALOFFSET            {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
> +    | PARSEOP_PLD_HORIZONTALOFFSET          {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
> +    ;
> +
> +RangeTypeKeyword
> +    : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
> +    | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
> +    | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
> +    ;
> +
> +RegionSpaceKeyword
> +    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
> +    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
> +    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
> +    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
> +    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
> +    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
> +    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
> +    | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
> +    | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
> +    | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
> +    | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
> +    | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
> +    ;
> +
> +ResourceTypeKeyword
> +    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
> +    ;
> +
> +SerializeRuleKeyword
> +    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
> +    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
> +    ;
> +
> +ShareTypeKeyword
> +    : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
> +    | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
> +    | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
> +    | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
> +   ;
> +
> +SlaveModeKeyword
> +    : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
> +    | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
> +    ;
> +
> +StopBitsKeyword
> +    : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
> +    | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
> +    | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
> +    | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
> +    ;
> +
> +TranslationKeyword
> +    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
> +    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
> +    ;
> +
> +TypeKeyword
> +    : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
> +    | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
> +    ;
> +
> +UpdateRuleKeyword
> +    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
> +    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
> +    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
> +    ;
> +
> +WireModeKeyword
> +    : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
> +    | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
> +    ;
> +
> +XferSizeKeyword
> +    : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
> +    | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
> +    | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
> +    | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
> +    | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
> +    | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
> +    ;
> +
> +XferTypeKeyword
> +    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
> +    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
> +    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
> +    ;
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 671c76f..4233ad3 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -169,8 +169,6 @@ Usage (
>       printf ("\nGeneral:\n");
>       ACPI_OPTION ("-@ <file>",       "Specify command file");
>       ACPI_OPTION ("-I <dir>",        "Specify additional include directory");
> -    ACPI_OPTION ("-T <sig list>|ALL",   "Create ACPI table template/example files");
> -    ACPI_OPTION ("-T <count>",      "Emit DSDT and <count> SSDTs to same file");
>       ACPI_OPTION ("-p <prefix>",     "Specify path/filename prefix for all output files");
>       ACPI_OPTION ("-v",              "Display compiler version");
>       ACPI_OPTION ("-vo",             "Enable optimization comments");
> @@ -195,7 +193,7 @@ Usage (
>       ACPI_OPTION ("-vi",             "Less verbose errors and warnings for use with IDEs");
>       ACPI_OPTION ("-vr",             "Disable remarks");
>       ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
> -    ACPI_OPTION ("-w1 -w2 -w3",     "Set warning reporting level");
> +    ACPI_OPTION ("-w <1|2|3>",      "Set warning reporting level");
>       ACPI_OPTION ("-we",             "Report warnings as errors");
>   
>       printf ("\nAML Code Generation (*.aml):\n");
> @@ -208,21 +206,31 @@ Usage (
>       ACPI_OPTION ("-in",             "Ignore NoOp operators");
>       ACPI_OPTION ("-r <revision>",   "Override table header Revision (1-255)");
>   
> -    printf ("\nOptional Source Code Output Files:\n");
> -    ACPI_OPTION ("-sc -sa",         "Create source file in C or assembler (*.c or *.asm)");
> -    ACPI_OPTION ("-ic -ia",         "Create include file in C or assembler (*.h or *.inc)");
> -    ACPI_OPTION ("-tc -ta -ts",     "Create hex AML table in C, assembler, or ASL (*.hex)");
> -    ACPI_OPTION ("-so",             "Create offset table in C (*.offset.h)");
> -
> -    printf ("\nOptional Listing Files:\n");
> +    printf ("\nListings:\n");
>       ACPI_OPTION ("-l",              "Create mixed listing file (ASL source and AML) (*.lst)");
>       ACPI_OPTION ("-lm",             "Create hardware summary map file (*.map)");
>       ACPI_OPTION ("-ln",             "Create namespace file (*.nsp)");
>       ACPI_OPTION ("-ls",             "Create combined source file (expanded includes) (*.src)");
>       ACPI_OPTION ("-lx",             "Create cross-reference file (*.xrf)");
>   
> +    printf ("\nFirmware Support - C Output:\n");
> +    ACPI_OPTION ("-tc",             "Create hex AML table in C (*.hex)");
> +    ACPI_OPTION ("-sc",             "Create named hex AML arrays in C (*.c)");
> +    ACPI_OPTION ("-ic",             "Create include file in C for -sc symbols (*.h)");
> +    ACPI_OPTION ("-so",             "Create namespace AML offset table in C (*.offset.h)");
> +
> +    printf ("\nFirmware Support - Assembler Output:\n");
> +    ACPI_OPTION ("-ta",             "Create hex AML table in assembler (*.hex)");
> +    ACPI_OPTION ("-sa",             "Create named hex AML arrays in assembler (*.asm)");
> +    ACPI_OPTION ("-ia",             "Create include file in assembler for -sa symbols (*.inc)");
> +
> +    printf ("\nFirmware Support - ASL Output:\n");
> +    ACPI_OPTION ("-ts",             "Create hex AML table in ASL (Buffer object) (*.hex)");
> +
>       printf ("\nData Table Compiler:\n");
>       ACPI_OPTION ("-G",              "Compile custom table that contains generic operators");
> +    ACPI_OPTION ("-T <sig list>|ALL",   "Create ACPI table template/example files");
> +    ACPI_OPTION ("-T <count>",      "Emit DSDT and <count> SSDTs to same file");
>       ACPI_OPTION ("-vt",             "Create verbose template files (full disassembly)");
>   
>       printf ("\nAML Disassembler:\n");
> diff --git a/src/acpica/source/compiler/aslparser.y b/src/acpica/source/compiler/aslparser.y
> index 1d6210b..cca976b 100644
> --- a/src/acpica/source/compiler/aslparser.y
> +++ b/src/acpica/source/compiler/aslparser.y
> @@ -138,6 +138,7 @@ void *
>   AslLocalAllocate (
>       unsigned int            Size);
>   
> +
>   /* Bison/yacc configuration */
>   
>   #define static
> @@ -171,7 +172,7 @@ AslLocalAllocate (
>    * These shift/reduce conflicts are expected. There should be zero
>    * reduce/reduce conflicts.
>    */
> -%expect 101
> +%expect 102
>   
>   /*! [Begin] no source code translation */
>   
> @@ -194,8 +195,11 @@ m4_include(asltypes.y)
>   /* Production rules */
>   
>   m4_include(aslrules.y)
> +m4_include(aslprimaries.y)
>   m4_include(aslcstyle.y)
> +m4_include(aslkeywords.y)
>   m4_include(aslresources.y)
> +m4_include(aslhelpers.y)
>   %%
>   
>   /*! [End] no source code translation !*/
> diff --git a/src/acpica/source/compiler/aslprimaries.y b/src/acpica/source/compiler/aslprimaries.y
> new file mode 100644
> index 0000000..605c889
> --- /dev/null
> +++ b/src/acpica/source/compiler/aslprimaries.y
> @@ -0,0 +1,1232 @@
> +NoEcho('
> +/******************************************************************************
> + *
> + * Module Name: aslprimaries.y - Rules for primary ASL operators
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 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.
> + *
> + *****************************************************************************/
> +
> +')
> +
> +
> +/*******************************************************************************
> + *
> + * ASL Primary Terms
> + *
> + ******************************************************************************/
> +
> +AccessAsTerm
> +    : PARSEOP_ACCESSAS '('
> +        AccessTypeKeyword
> +        OptionalAccessAttribTerm
> +        ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
> +    | PARSEOP_ACCESSAS '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +AcquireTerm
> +    : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
> +        SuperName
> +        ',' WordConstExpr
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
> +    | PARSEOP_ACQUIRE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +AddTerm
> +    : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_ADD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +AliasTerm
> +    : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
> +        NameString
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
> +                                        TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_ALIAS '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +AndTerm
> +    : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_AND '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ArgTerm
> +    : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
> +    | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
> +    | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
> +    | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
> +    | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
> +    | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
> +    | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
> +    ;
> +
> +BankFieldTerm
> +    : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
> +        NameString
> +        NameStringItem
> +        TermArgItem
> +        ',' AccessTypeKeyword
> +        ',' LockRuleKeyword
> +        ',' UpdateRuleKeyword
> +        ')' '{'
> +            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,
> +                                        $4,$5,$6,$8,$10,$12,$15);}
> +    | PARSEOP_BANKFIELD '('
> +        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +BreakTerm
> +    : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
> +    ;
> +
> +BreakPointTerm
> +    : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
> +    ;
> +
> +BufferTerm
> +    : PARSEOP_BUFFER                {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
> +        OptionalDataCount
> +        '{' BufferTermData '}'      {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
> +    ;
> +
> +BufferTermData
> +    : ByteList                      {}
> +    | StringData                    {}
> +    ;
> +
> +CaseTerm
> +    : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
> +        DataObject
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> +    | PARSEOP_CASE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ConcatTerm
> +    : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_CONCATENATE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ConcatResTerm
> +    : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (
> +                                            PARSEOP_CONCATENATERESTEMPLATE);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_CONCATENATERESTEMPLATE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ConnectionTerm
> +    : PARSEOP_CONNECTION '('
> +        NameString
> +        ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
> +    | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
> +        ResourceMacroTerm
> +        ')'                         {$$ = TrLinkChildren ($<n>3, 1,
> +                                        TrLinkChildren (
> +                                            TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
> +                                            TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> +                                            TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> +                                            $4));}
> +    | PARSEOP_CONNECTION '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CondRefOfTerm
> +    : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
> +        SuperName
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_CONDREFOF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ContinueTerm
> +    : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
> +    ;
> +
> +CopyObjectTerm
> +    : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
> +        TermArg
> +        ',' SimpleTarget
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
> +                                        TrSetNodeFlags ($6, NODE_IS_TARGET));}
> +    | PARSEOP_COPYOBJECT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CreateBitFieldTerm
> +    : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
> +        TermArg
> +        TermArgItem
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_CREATEBITFIELD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CreateByteFieldTerm
> +    : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
> +        TermArg
> +        TermArgItem
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_CREATEBYTEFIELD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CreateDWordFieldTerm
> +    : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
> +        TermArg
> +        TermArgItem
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_CREATEDWORDFIELD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CreateFieldTerm
> +    : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
> +        TermArg
> +        TermArgItem
> +        TermArgItem
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,
> +                                        TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_CREATEFIELD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CreateQWordFieldTerm
> +    : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
> +        TermArg
> +        TermArgItem
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_CREATEQWORDFIELD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +CreateWordFieldTerm
> +    : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
> +        TermArg
> +        TermArgItem
> +        NameStringItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
> +                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_CREATEWORDFIELD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +DataRegionTerm
> +    : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
> +        NameString
> +        TermArgItem
> +        TermArgItem
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
> +    | PARSEOP_DATATABLEREGION '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +DebugTerm
> +    : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
> +    ;
> +
> +DecTerm
> +    : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_DECREMENT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +DefaultTerm
> +    : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
> +        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_DEFAULT '{'
> +        error '}'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +DerefOfTerm
> +    : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
> +        TermArg
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_DEREFOF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +DeviceTerm
> +    : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
> +        NameString
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> +    | PARSEOP_DEVICE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +DivideTerm
> +    : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
> +    | PARSEOP_DIVIDE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +EISAIDTerm
> +    : PARSEOP_EISAID '('
> +        StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
> +    | PARSEOP_EISAID '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ElseIfTerm
> +    : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
> +    ;
> +
> +ElseTerm
> +    :                               {$$ = NULL;}
> +    | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> +        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
> +
> +    | PARSEOP_ELSE '{'
> +        error '}'                   {$$ = AslDoError(); yyclearin;}
> +
> +    | PARSEOP_ELSE
> +        error                       {$$ = AslDoError(); yyclearin;}
> +
> +    | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> +        TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> +        ')' '{'
> +            TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
> +        ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
> +                                    {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
> +
> +    | PARSEOP_ELSEIF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +
> +    | PARSEOP_ELSEIF
> +        error                       {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +EventTerm
> +    : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
> +        NameString
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
> +    | PARSEOP_EVENT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ExternalTerm
> +    : PARSEOP_EXTERNAL '('
> +        NameString
> +        OptionalObjectTypeKeyword
> +        OptionalParameterTypePackage
> +        OptionalParameterTypesPackage
> +        ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
> +    | PARSEOP_EXTERNAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +FatalTerm
> +    : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
> +        ByteConstExpr
> +        ',' DWordConstExpr
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
> +    | PARSEOP_FATAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +FieldTerm
> +    : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
> +        NameString
> +        ',' AccessTypeKeyword
> +        ',' LockRuleKeyword
> +        ',' UpdateRuleKeyword
> +        ')' '{'
> +            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
> +    | PARSEOP_FIELD '('
> +        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +FindSetLeftBitTerm
> +    : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_FINDSETLEFTBIT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +FindSetRightBitTerm
> +    : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_FINDSETRIGHTBIT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +    /* Convert a For() loop to a While() loop */
> +ForTerm
> +    : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> +        OptionalTermArg ','         {}
> +        OptionalPredicate ','
> +        OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
> +                                        TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
> +        ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
> +                                    {$<n>$ = TrLinkPeerNode ($13,$9);
> +                                        $$ = $<n>10;}
> +    ;
> +
> +OptionalPredicate
> +    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
> +    | TermArg                       {$$ = $1;}
> +    ;
> +
> +FprintfTerm
> +    : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
> +        TermArg ','
> +        StringData
> +        PrintfArgList
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
> +    | PARSEOP_FPRINTF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +FromBCDTerm
> +    : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_FROMBCD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +FunctionTerm
> +    : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> +        NameString
> +        OptionalParameterTypePackage
> +        OptionalParameterTypesPackage
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
> +                                        TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
> +                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
> +    | PARSEOP_FUNCTION '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +IfTerm
> +    : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> +        TermArg
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> +
> +    | PARSEOP_IF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +IncludeTerm
> +    : PARSEOP_INCLUDE '('
> +        String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
> +                                        FlOpenIncludeFile ($3);}
> +    ;
> +
> +IncludeEndTerm
> +    : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);
> +                                        TrSetCurrentFilename ($$);}
> +    ;
> +
> +IncTerm
> +    : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_INCREMENT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +IndexFieldTerm
> +    : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
> +        NameString
> +        NameStringItem
> +        ',' AccessTypeKeyword
> +        ',' LockRuleKeyword
> +        ',' UpdateRuleKeyword
> +        ')' '{'
> +            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
> +    | PARSEOP_INDEXFIELD '('
> +        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +IndexTerm
> +    : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_INDEX '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LAndTerm
> +    : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_LAND '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LEqualTerm
> +    : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_LEQUAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LGreaterEqualTerm
> +    : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
> +                                        TrLinkChildren ($<n>3,2,$4,$5));}
> +    | PARSEOP_LGREATEREQUAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LGreaterTerm
> +    : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_LGREATER '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LLessEqualTerm
> +    : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
> +                                        TrLinkChildren ($<n>3,2,$4,$5));}
> +    | PARSEOP_LLESSEQUAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LLessTerm
> +    : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_LLESS '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LNotEqualTerm
> +    : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
> +                                        TrLinkChildren ($<n>3,2,$4,$5));}
> +    | PARSEOP_LNOTEQUAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LNotTerm
> +    : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
> +        TermArg
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_LNOT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LoadTableTerm
> +    : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
> +        TermArg
> +        TermArgItem
> +        TermArgItem
> +        OptionalListString
> +        OptionalListString
> +        OptionalReference
> +        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
> +    | PARSEOP_LOADTABLE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LoadTerm
> +    : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
> +        NameString
> +        RequiredTarget
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_LOAD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +LocalTerm
> +    : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
> +    | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
> +    | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
> +    | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
> +    | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
> +    | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
> +    | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
> +    | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
> +    ;
> +
> +LOrTerm
> +    : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
> +        TermArg
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_LOR '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +MatchTerm
> +    : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
> +        TermArg
> +        ',' MatchOpKeyword
> +        TermArgItem
> +        ',' MatchOpKeyword
> +        TermArgItem
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
> +    | PARSEOP_MATCH '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +MethodTerm
> +    : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> +        NameString
> +        OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
> +        OptionalSerializeRuleKeyword
> +        OptionalByteConstExpr
> +        OptionalParameterTypePackage
> +        OptionalParameterTypesPackage
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $5,$7,$8,$9,$10,$13);}
> +    | PARSEOP_METHOD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +MidTerm
> +    : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
> +        TermArg
> +        TermArgItem
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
> +    | PARSEOP_MID '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ModTerm
> +    : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_MOD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +MultiplyTerm
> +    : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_MULTIPLY '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +MutexTerm
> +    : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
> +        NameString
> +        ',' ByteConstExpr
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> +    | PARSEOP_MUTEX '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +NameTerm
> +    : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
> +        NameString
> +        ',' DataObject
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> +    | PARSEOP_NAME '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +NAndTerm
> +    : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_NAND '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +NoOpTerm
> +    : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
> +    ;
> +
> +NOrTerm
> +    : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_NOR '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +NotifyTerm
> +    : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
> +        SuperName
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_NOTIFY '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +NotTerm
> +    : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_NOT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ObjectTypeTerm
> +    : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
> +        ObjectTypeName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_OBJECTTYPE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +OffsetTerm
> +    : PARSEOP_OFFSET '('
> +        AmlPackageLengthTerm
> +        ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
> +    | PARSEOP_OFFSET '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +OpRegionTerm
> +    : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
> +        NameString
> +        ',' OpRegionSpaceIdTerm
> +        TermArgItem
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $6,$7,$8);}
> +    | PARSEOP_OPERATIONREGION '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +OpRegionSpaceIdTerm
> +    : RegionSpaceKeyword            {}
> +    | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> +    ;
> +
> +OrTerm
> +    : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_OR '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +PackageTerm
> +    : PARSEOP_PACKAGE               {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
> +        OptionalDataCount
> +        '{' PackageList '}'         {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
> +
> +PowerResTerm
> +    : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
> +        NameString
> +        ',' ByteConstExpr
> +        ',' WordConstExpr
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,4,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $6,$8,$11);}
> +    | PARSEOP_POWERRESOURCE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +PrintfTerm
> +    : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
> +        StringData
> +        PrintfArgList
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_PRINTF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +PrintfArgList
> +    :                               {$$ = NULL;}
> +    | TermArg                       {$$ = $1;}
> +    | PrintfArgList ','
> +       TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
> +    ;
> +
> +ProcessorTerm
> +    : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
> +        NameString
> +        ',' ByteConstExpr
> +        OptionalDWordConstExpr
> +        OptionalByteConstExpr
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,5,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> +                                        $6,$7,$8,$11);}
> +    | PARSEOP_PROCESSOR '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +RawDataBufferTerm
> +    : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
> +        OptionalWordConst
> +        ')' '{'
> +            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> +    | PARSEOP_DATABUFFER '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +/*
> + * In RefOf, the node isn't really a target, but we can't keep track of it after
> + * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
> + */
> +RefOfTerm
> +    : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,
> +                                        TrSetNodeFlags ($4, NODE_IS_TARGET));}
> +    | PARSEOP_REFOF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ReleaseTerm
> +    : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_RELEASE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ResetTerm
> +    : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_RESET '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ReturnTerm
> +    : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
> +        OptionalReturnArg
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_RETURN                {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_RETURN),1,
> +                                        TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
> +                                            NODE_IS_NULL_RETURN));}
> +    | PARSEOP_RETURN '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ScopeTerm
> +    : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
> +        NameString
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> +    | PARSEOP_SCOPE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ShiftLeftTerm
> +    : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_SHIFTLEFT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ShiftRightTerm
> +    : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_SHIFTRIGHT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +SignalTerm
> +    : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_SIGNAL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +SizeOfTerm
> +    : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_SIZEOF '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +SleepTerm
> +    : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
> +        TermArg
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_SLEEP '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +StallTerm
> +    : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
> +        TermArg
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_STALL '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +StoreTerm
> +    : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
> +        TermArg
> +        ',' SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
> +                                        TrSetNodeFlags ($6, NODE_IS_TARGET));}
> +    | PARSEOP_STORE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +SubtractTerm
> +    : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_SUBTRACT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +SwitchTerm
> +    : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
> +        TermArg
> +        ')' '{'
> +            CaseDefaultTermList '}'
> +                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> +    | PARSEOP_SWITCH '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ThermalZoneTerm
> +    : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
> +        NameString
> +        ')' '{'
> +            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
> +                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> +    | PARSEOP_THERMALZONE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +TimerTerm
> +    : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,0);}
> +    | PARSEOP_TIMER                 {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_TIMER),0);}
> +    | PARSEOP_TIMER '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToBCDTerm
> +    : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_TOBCD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToBufferTerm
> +    : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_TOBUFFER '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToDecimalStringTerm
> +    : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_TODECIMALSTRING '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToHexStringTerm
> +    : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_TOHEXSTRING '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToIntegerTerm
> +    : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
> +        TermArg
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_TOINTEGER '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToPLDTerm
> +    : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
> +        PldKeywordList
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_TOPLD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +PldKeywordList
> +    :                               {$$ = NULL;}
> +    | PldKeyword
> +        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
> +    | PldKeyword
> +        PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
> +    | PldKeywordList ','            /* Allows a trailing comma at list end */
> +    | PldKeywordList ','
> +        PldKeyword
> +        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
> +    | PldKeywordList ','
> +        PldKeyword
> +        PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
> +    ;
> +
> +
> +ToStringTerm
> +    : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
> +        TermArg
> +        OptionalCount
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_TOSTRING '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +ToUUIDTerm
> +    : PARSEOP_TOUUID '('
> +        StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
> +    | PARSEOP_TOUUID '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +UnicodeTerm
> +    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
> +        StringData
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
> +    | PARSEOP_UNICODE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +UnloadTerm
> +    : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
> +        SuperName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_UNLOAD '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +WaitTerm
> +    : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
> +        SuperName
> +        TermArgItem
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> +    | PARSEOP_WAIT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +XOrTerm
> +    : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
> +        TermArg
> +        TermArgItem
> +        Target
> +        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> +    | PARSEOP_XOR '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +WhileTerm
> +    : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> +        TermArg
> +        ')' '{' TermList '}'
> +                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> +    | PARSEOP_WHILE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> diff --git a/src/acpica/source/compiler/aslresources.y b/src/acpica/source/compiler/aslresources.y
> index d3dbe99..9f5fb02 100644
> --- a/src/acpica/source/compiler/aslresources.y
> +++ b/src/acpica/source/compiler/aslresources.y
> @@ -116,313 +116,6 @@ NoEcho('
>   
>   ')
>   
> -/*******************************************************************************
> - *
> - * ASL Parameter Keyword Terms
> - *
> - ******************************************************************************/
> -
> -AccessAttribKeyword
> -    : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
> -    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
> -    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
> -    | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
> -    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
> -    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
> -    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
> -    | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
> -        ByteConst
> -        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
> -        ByteConst
> -        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
> -        ByteConst
> -        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    ;
> -
> -AccessTypeKeyword
> -    : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
> -    | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
> -    | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
> -    | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
> -    | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
> -    | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
> -    ;
> -
> -AddressingModeKeyword
> -    : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
> -    | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
> -    ;
> -
> -AddressKeyword
> -    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
> -    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
> -    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
> -    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
> -    ;
> -
> -AddressSpaceKeyword
> -    : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
> -    | RegionSpaceKeyword                    {}
> -    ;
> -
> -BitsPerByteKeyword
> -    : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
> -    | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
> -    | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
> -    | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
> -    | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
> -    ;
> -
> -ClockPhaseKeyword
> -    : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
> -    | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
> -    ;
> -
> -ClockPolarityKeyword
> -    : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
> -    | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
> -    ;
> -
> -DecodeKeyword
> -    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
> -    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
> -    ;
> -
> -DevicePolarityKeyword
> -    : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
> -    | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
> -    ;
> -
> -DMATypeKeyword
> -    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
> -    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
> -    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
> -    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
> -    ;
> -
> -EndianKeyword
> -    : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
> -    | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
> -    ;
> -
> -FlowControlKeyword
> -    : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
> -    | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
> -    | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
> -    ;
> -
> -InterruptLevel
> -    : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
> -    | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
> -    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
> -    ;
> -
> -InterruptTypeKeyword
> -    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
> -    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
> -    ;
> -
> -IODecodeKeyword
> -    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
> -    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
> -    ;
> -
> -IoRestrictionKeyword
> -    : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
> -    | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
> -    | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
> -    | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
> -    ;
> -
> -LockRuleKeyword
> -    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
> -    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
> -    ;
> -
> -MatchOpKeyword
> -    : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
> -    | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
> -    | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
> -    | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
> -    | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
> -    | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
> -    ;
> -
> -MaxKeyword
> -    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
> -    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
> -    ;
> -
> -MemTypeKeyword
> -    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
> -    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
> -    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
> -    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
> -    ;
> -
> -MinKeyword
> -    : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
> -    | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
> -    ;
> -
> -ObjectTypeKeyword
> -    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> -    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
> -    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
> -    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
> -    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
> -    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
> -    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
> -    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
> -    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
> -    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
> -    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
> -    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
> -    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
> -    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
> -    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
> -    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
> -    ;
> -
> -ParityTypeKeyword
> -    : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
> -    | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
> -    | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
> -    | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
> -    | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
> -    ;
> -
> -PinConfigByte
> -    : PinConfigKeyword                      {$$ = $1;}
> -    | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> -    ;
> -
> -PinConfigKeyword
> -    : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
> -    | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
> -    | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
> -    | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
> -    ;
> -
> -PldKeyword
> -    : PARSEOP_PLD_REVISION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
> -    | PARSEOP_PLD_IGNORECOLOR               {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
> -    | PARSEOP_PLD_RED                       {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
> -    | PARSEOP_PLD_GREEN                     {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
> -    | PARSEOP_PLD_BLUE                      {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
> -    | PARSEOP_PLD_WIDTH                     {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
> -    | PARSEOP_PLD_HEIGHT                    {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
> -    | PARSEOP_PLD_USERVISIBLE               {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
> -    | PARSEOP_PLD_DOCK                      {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
> -    | PARSEOP_PLD_LID                       {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
> -    | PARSEOP_PLD_PANEL                     {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
> -    | PARSEOP_PLD_VERTICALPOSITION          {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
> -    | PARSEOP_PLD_HORIZONTALPOSITION        {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
> -    | PARSEOP_PLD_SHAPE                     {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
> -    | PARSEOP_PLD_GROUPORIENTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
> -    | PARSEOP_PLD_GROUPTOKEN                {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
> -    | PARSEOP_PLD_GROUPPOSITION             {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
> -    | PARSEOP_PLD_BAY                       {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
> -    | PARSEOP_PLD_EJECTABLE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
> -    | PARSEOP_PLD_EJECTREQUIRED             {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
> -    | PARSEOP_PLD_CABINETNUMBER             {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
> -    | PARSEOP_PLD_CARDCAGENUMBER            {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
> -    | PARSEOP_PLD_REFERENCE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
> -    | PARSEOP_PLD_ROTATION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
> -    | PARSEOP_PLD_ORDER                     {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
> -    | PARSEOP_PLD_RESERVED                  {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
> -    | PARSEOP_PLD_VERTICALOFFSET            {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
> -    | PARSEOP_PLD_HORIZONTALOFFSET          {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
> -    ;
> -
> -RangeTypeKeyword
> -    : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
> -    | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
> -    | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
> -    ;
> -
> -RegionSpaceKeyword
> -    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
> -    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
> -    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
> -    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
> -    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
> -    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
> -    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
> -    | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
> -    | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
> -    | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
> -    | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
> -    | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
> -    ;
> -
> -ResourceTypeKeyword
> -    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> -    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
> -    ;
> -
> -SerializeRuleKeyword
> -    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
> -    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
> -    ;
> -
> -ShareTypeKeyword
> -    : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
> -    | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
> -    | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
> -    | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
> -   ;
> -
> -SlaveModeKeyword
> -    : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
> -    | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
> -    ;
> -
> -StopBitsKeyword
> -    : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
> -    | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
> -    | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
> -    | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
> -    ;
> -
> -TranslationKeyword
> -    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
> -    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
> -    ;
> -
> -TypeKeyword
> -    : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
> -    | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
> -    ;
> -
> -UpdateRuleKeyword
> -    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
> -    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
> -    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
> -    ;
> -
> -WireModeKeyword
> -    : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
> -    | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
> -    ;
> -
> -XferSizeKeyword
> -    : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
> -    | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
> -    | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
> -    | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
> -    | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
> -    | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
> -    ;
> -
> -XferTypeKeyword
> -    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
> -    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
> -    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
> -    ;
> -
>   
>   /*******************************************************************************
>    *
> @@ -435,15 +128,20 @@ XferTypeKeyword
>    * Also, insert the EndTag at the end of the template.
>    */
>   ResourceTemplateTerm
> -    : PARSEOP_RESOURCETEMPLATE '(' ')'
> +    : PARSEOP_RESOURCETEMPLATE OptionalParentheses
>           '{'
>           ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
>                                             TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
>                                             TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> -                                          $5,
> +                                          $4,
>                                             TrCreateLeafNode (PARSEOP_ENDTAG));}
>       ;
>   
> +OptionalParentheses
> +    :                               {$$ = NULL;}
> +    | '(' ')'                       {$$ = NULL;}
> +    ;
> +
>   ResourceMacroList
>       :                               {$$ = NULL;}
>       | ResourceMacroList
> @@ -518,7 +216,8 @@ DWordIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
>       | PARSEOP_DWORDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -541,7 +240,8 @@ DWordMemoryTerm
>           OptionalNameString
>           OptionalAddressRange
>           OptionalType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,16,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
>       | PARSEOP_DWORDMEMORY '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -562,7 +262,8 @@ DWordSpaceTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
>       | PARSEOP_DWORDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -590,7 +291,8 @@ ExtendedIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
>       | PARSEOP_EXTENDEDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -612,7 +314,8 @@ ExtendedMemoryTerm
>           OptionalNameString
>           OptionalAddressRange
>           OptionalType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
>       | PARSEOP_EXTENDEDMEMORY '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -632,7 +335,8 @@ ExtendedSpaceTerm
>           ',' QWordConstExpr
>           OptionalQWordConstExpr
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,13,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
>       | PARSEOP_EXTENDEDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -671,7 +375,8 @@ GpioIntTerm
>           OptionalNameString          /* 15: DescriptorName */
>           OptionalBuffer_Last         /* 16: VendorData */
>           ')' '{'
> -            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
> +            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,
> +                                        $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
>       | PARSEOP_GPIO_INT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -689,7 +394,8 @@ GpioIoTerm
>           OptionalNameString          /* 14: DescriptorName */
>           OptionalBuffer_Last         /* 15: VendorData */
>           ')' '{'
> -            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
> +            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,
> +                                        $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
>       | PARSEOP_GPIO_IO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -705,7 +411,8 @@ I2cSerialBusTerm
>           OptionalResourceType        /* 12: ResourceType */
>           OptionalNameString          /* 13: DescriptorName */
>           OptionalBuffer_Last         /* 14: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
> +        ')'                         {$$ = TrLinkChildren ($<n>3,10,
> +                                        $4,$5,$7,$8,$10,$11,$12,$13,
>                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
>       | PARSEOP_I2C_SERIALBUS '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
> @@ -723,8 +430,8 @@ I2cSerialBusTermV2
>           OptionalNameString          /* 13: DescriptorName */
>           OptionalShareType           /* 14: Share */
>           OptionalBuffer_Last         /* 15: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
> -                                        $14,$15);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,10,
> +                                        $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
>       | PARSEOP_I2C_SERIALBUS_V2 '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -739,7 +446,8 @@ InterruptTerm
>           OptionalStringData
>           OptionalNameString_Last
>           ')' '{'
> -            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
> +            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,
> +                                        $4,$6,$8,$9,$10,$11,$12,$15);}
>       | PARSEOP_INTERRUPT '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -832,7 +540,8 @@ QWordIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
>       | PARSEOP_QWORDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -855,7 +564,8 @@ QWordMemoryTerm
>           OptionalNameString
>           OptionalAddressRange
>           OptionalType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,16,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
>       | PARSEOP_QWORDMEMORY '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -876,7 +586,8 @@ QWordSpaceTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
>       | PARSEOP_QWORDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -909,7 +620,8 @@ SpiSerialBusTerm
>           OptionalResourceType        /* 19: ResourceType */
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalBuffer_Last         /* 21: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
>                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
>       | PARSEOP_SPI_SERIALBUS '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
> @@ -931,8 +643,8 @@ SpiSerialBusTermV2
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalShareType           /* 21: Share */
>           OptionalBuffer_Last         /* 22: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
> -                                        $21,$22);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
>       | PARSEOP_SPI_SERIALBUS_V2 '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -971,7 +683,8 @@ UartSerialBusTerm
>           OptionalResourceType        /* 19: ResourceType */
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalBuffer_Last         /* 21: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
>                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
>       | PARSEOP_UART_SERIALBUS '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
> @@ -994,8 +707,8 @@ UartSerialBusTermV2
>           OptionalNameString          /* 20: DescriptorName */
>           OptionalShareType           /* 21: Share */
>           OptionalBuffer_Last         /* 22: VendorData */
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
> -                                        $21,$22);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
>       | PARSEOP_UART_SERIALBUS_V2 '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1032,7 +745,8 @@ WordBusNumberTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,12,
> +                                        $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
>       | PARSEOP_WORDBUSNUMBER '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1054,7 +768,8 @@ WordIOTerm
>           OptionalNameString
>           OptionalType
>           OptionalTranslationType_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,15,
> +                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
>       | PARSEOP_WORDIO '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> @@ -1075,246 +790,8 @@ WordSpaceTerm
>           OptionalByteConstExpr
>           OptionalStringData
>           OptionalNameString_Last
> -        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,
> +                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
>       | PARSEOP_WORDSPACE '('
>           error ')'                   {$$ = AslDoError(); yyclearin;}
>       ;
> -
> -
> -/******* Object References ***********************************************/
> -
> -/* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
> -
> -NameString
> -    : NameSeg                       {}
> -    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
> -    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
> -    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
> -    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
> -    ;
> -
> -NameSeg
> -    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
> -    ;
> -
> -
> -/*******************************************************************************
> - *
> - * ASL Helper Terms
> - *
> - ******************************************************************************/
> -
> -OptionalBusMasterKeyword
> -    : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> -    | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> -    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
> -    ;
> -
> -OptionalAccessAttribTerm
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' ByteConstExpr             {$$ = $2;}
> -    | ',' AccessAttribKeyword       {$$ = $2;}
> -    ;
> -
> -OptionalAccessSize
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
> -    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
> -    | ',' ByteConstExpr             {$$ = $2;}
> -    ;
> -
> -OptionalAddressingMode
> -    : ','                           {$$ = NULL;}
> -    | ',' AddressingModeKeyword     {$$ = $2;}
> -    ;
> -
> -OptionalAddressRange
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' AddressKeyword            {$$ = $2;}
> -    ;
> -
> -OptionalBitsPerByte
> -    : ','                           {$$ = NULL;}
> -    | ',' BitsPerByteKeyword        {$$ = $2;}
> -    ;
> -
> -OptionalBuffer_Last
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' RawDataBufferTerm         {$$ = $2;}
> -    ;
> -
> -OptionalByteConstExpr
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' ByteConstExpr             {$$ = $2;}
> -    ;
> -
> -OptionalDecodeType
> -    : ','                           {$$ = NULL;}
> -    | ',' DecodeKeyword             {$$ = $2;}
> -    ;
> -
> -OptionalDevicePolarity
> -    : ','                           {$$ = NULL;}
> -    | ',' DevicePolarityKeyword     {$$ = $2;}
> -    ;
> -
> -OptionalDWordConstExpr
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' DWordConstExpr            {$$ = $2;}
> -    ;
> -
> -OptionalEndian
> -    : ','                           {$$ = NULL;}
> -    | ',' EndianKeyword             {$$ = $2;}
> -    ;
> -
> -OptionalFlowControl
> -    : ','                           {$$ = NULL;}
> -    | ',' FlowControlKeyword        {$$ = $2;}
> -    ;
> -
> -OptionalIoRestriction
> -    : ','                           {$$ = NULL;}
> -    | ',' IoRestrictionKeyword      {$$ = $2;}
> -    ;
> -
> -OptionalListString
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> -    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> -    | ',' TermArg                   {$$ = $2;}
> -    ;
> -
> -OptionalMaxType
> -    : ','                           {$$ = NULL;}
> -    | ',' MaxKeyword                {$$ = $2;}
> -    ;
> -
> -OptionalMemType
> -    : ','                           {$$ = NULL;}
> -    | ',' MemTypeKeyword            {$$ = $2;}
> -    ;
> -
> -OptionalMinType
> -    : ','                           {$$ = NULL;}
> -    | ',' MinKeyword                {$$ = $2;}
> -    ;
> -
> -OptionalNameString
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' NameString                {$$ = $2;}
> -    ;
> -
> -OptionalNameString_Last
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' NameString                {$$ = $2;}
> -    ;
> -
> -OptionalNameString_First
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
> -    | NameString                    {$$ = $1;}
> -    ;
> -
> -OptionalObjectTypeKeyword
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> -    | ',' ObjectTypeKeyword         {$$ = $2;}
> -    ;
> -
> -OptionalParityType
> -    : ','                           {$$ = NULL;}
> -    | ',' ParityTypeKeyword         {$$ = $2;}
> -    ;
> -
> -OptionalQWordConstExpr
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' QWordConstExpr            {$$ = $2;}
> -    ;
> -
> -OptionalRangeType
> -    : ','                           {$$ = NULL;}
> -    | ',' RangeTypeKeyword          {$$ = $2;}
> -    ;
> -
> -OptionalReadWriteKeyword
> -    :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> -    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> -    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
> -    ;
> -
> -OptionalResourceType_First
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> -    | ResourceTypeKeyword           {$$ = $1;}
> -    ;
> -
> -OptionalResourceType
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> -    | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> -    | ',' ResourceTypeKeyword       {$$ = $2;}
> -    ;
> -
> -OptionalSlaveMode
> -    : ','                           {$$ = NULL;}
> -    | ',' SlaveModeKeyword          {$$ = $2;}
> -    ;
> -
> -OptionalShareType
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' ShareTypeKeyword          {$$ = $2;}
> -    ;
> -
> -OptionalShareType_First
> -    :                               {$$ = NULL;}
> -    | ShareTypeKeyword              {$$ = $1;}
> -    ;
> -
> -OptionalStopBits
> -    : ','                           {$$ = NULL;}
> -    | ',' StopBitsKeyword           {$$ = $2;}
> -    ;
> -
> -OptionalStringData
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' StringData                {$$ = $2;}
> -    ;
> -
> -OptionalTranslationType_Last
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' TranslationKeyword        {$$ = $2;}
> -    ;
> -
> -OptionalType
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' TypeKeyword               {$$ = $2;}
> -    ;
> -
> -OptionalType_Last
> -    :                               {$$ = NULL;}
> -    | ','                           {$$ = NULL;}
> -    | ',' TypeKeyword               {$$ = $2;}
> -    ;
> -
> -OptionalWireMode
> -    : ','                           {$$ = NULL;}
> -    | ',' WireModeKeyword           {$$ = $2;}
> -    ;
> -
> -OptionalWordConstExpr
> -    : ','                           {$$ = NULL;}
> -    | ',' WordConstExpr             {$$ = $2;}
> -    ;
> -
> -OptionalXferSize
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> -    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> -    | ',' XferSizeKeyword           {$$ = $2;}
> -    ;
> diff --git a/src/acpica/source/compiler/aslrules.y b/src/acpica/source/compiler/aslrules.y
> index c4b0fc2..73c8062 100644
> --- a/src/acpica/source/compiler/aslrules.y
> +++ b/src/acpica/source/compiler/aslrules.y
> @@ -127,7 +127,8 @@ NoEcho('
>    * to handle output from preprocessors
>    */
>   AslCode
> -    : DefinitionBlockList           {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
> +    : DefinitionBlockList           {$<n>$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
>       | error                         {YYABORT; $$ = NULL;}
>       ;
>   
> @@ -160,7 +161,8 @@ DefinitionBlockTerm
>           String ','
>           DWordConst
>           ')'                         {TrSetEndLineNumber ($<n>3);}
> -            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
> +            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,
> +                                        $4,$6,$8,$10,$12,$14,$18);}
>       ;
>   
>   DefinitionBlockList
> @@ -169,12 +171,36 @@ DefinitionBlockList
>           DefinitionBlockList         {$$ = TrLinkPeerNodes (2, $1,$2);}
>       ;
>   
> +/* Allow IO, DMA, IRQ Resource macro and FOR macro names to also be used as identifiers */
> +
> +NameString
> +    : NameSeg                       {}
> +    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) $1);}
> +    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
> +    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
> +    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
> +    | PARSEOP_FOR                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "FOR");}
> +    ;
> +/*
> +NameSeg
> +    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT)
> +                                            TrNormalizeNameSeg ($1));}
> +    ;
> +*/
> +
> +NameSeg
> +    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
> +                                            (ACPI_NATIVE_INT) AslCompilerlval.s);}
> +    ;
> +
> +
>   SuperName
>       : NameString                    {}
>       | ArgTerm                       {}
>       | LocalTerm                     {}
>       | DebugTerm                     {}
>       | Type6Opcode                   {}
> +    ;
>   
>   Target
>       :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
> @@ -188,6 +214,8 @@ TermArg
>       | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
>       | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
>       | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
> +
> +
>       ;
>   
>   /*
> @@ -212,9 +240,26 @@ OptionalCount
>       | ',' TermArg                   {$$ = $2;}
>       ;
>   
> -VarPackageLengthTerm
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | TermArg                       {$$ = $1;}
> +/*
> + * Data count for buffers and packages (byte count for buffers,
> + * element count for packages).
> + */
> +OptionalDataCount
> +
> +        /* Legacy ASL */
> +    :                               {$$ = NULL;}
> +    | '(' TermArg ')'               {$$ = $2;}
> +    | '('  ')'                      {$$ = NULL;}
> +
> +        /* C-style (ASL+) -- adds equals term */
> +
> +    |  PARSEOP_EXP_EQUALS           {$$ = NULL;}
> +
> +    | '(' TermArg ')'
> +        PARSEOP_EXP_EQUALS          {$$ = $2;}
> +
> +    | '('  ')' String
> +        PARSEOP_EXP_EQUALS          {$$ = NULL;}
>       ;
>   
>   
> @@ -269,6 +314,7 @@ Object
>       : CompilerDirective             {}
>       | NamedObject                   {}
>       | NameSpaceModifier             {}
> +//    | StructureTerm                 {}
>       ;
>   
>   PackageList
> @@ -301,7 +347,8 @@ ParameterTypePackageList
>   
>   OptionalParameterTypePackage
>       :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
> +    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
>       ;
>   
>       /* Rules for specifying the types for method arguments */
> @@ -320,17 +367,22 @@ ParameterTypesPackageList
>   
>   OptionalParameterTypesPackage
>       :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
> +    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (
> +                                        TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
>       ;
>   
>       /* ACPI 3.0 -- allow semicolons between terms */
>   
>   TermList
>       :                               {$$ = NULL;}
> -    | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> -    | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> -    | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> -    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> +    | TermList Term                 {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> +    | TermList Term ';'             {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> +    | TermList ';' Term             {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> +    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (
> +                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
>       ;
>   
>   Term
> @@ -438,29 +490,37 @@ QWordConst
>    * constant folding code in the node AmlLength field.
>    */
>   ByteConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 1);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 1);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
>       | ByteConst                     {}
>       ;
>   
>   WordConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 2);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 2);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
>       | WordConst                     {}
>       ;
>   
>   DWordConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 4);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 4);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
>       | DWordConst                    {}
>       ;
>   
>   QWordConstExpr
> -    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
> -    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
> +    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 8);}
> +    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
> +                                        TrSetNodeAmlLength ($1, 8);}
>       | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
>       | QWordConst                    {}
>       ;
> @@ -481,11 +541,13 @@ ConstExprTerm
>       ;
>   
>   Integer
> -    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
> +    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER,
> +                                        AslCompilerlval.i);}
>       ;
>   
>   String
> -    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
> +    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
> +                                        (ACPI_NATIVE_INT) AslCompilerlval.s);}
>       ;
>   
>   
> @@ -526,6 +588,7 @@ NamedObject
>   NameSpaceModifier
>       : AliasTerm                     {}
>       | NameTerm                      {}
> +//    | NameTermAslPlus               {}
>       | ScopeTerm                     {}
>       ;
>   
> @@ -539,6 +602,7 @@ ObjectTypeName
>       | RefOfTerm                     {}
>       | DerefOfTerm                   {}
>       | IndexTerm                     {}
> +
>   /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
>       ;
>   
> @@ -604,6 +668,8 @@ Type2IntegerOpcode                  /* "Type3" opcodes */
>       | FromBCDTerm                   {}
>       | IncTerm                       {}
>       | IndexTerm                     {}
> +//    | StructureIndexTerm            {}
> +//    | StructurePointerTerm          {}
>       | LAndTerm                      {}
>       | LEqualTerm                    {}
>       | LGreaterTerm                  {}
> @@ -664,6 +730,8 @@ Type4Opcode
>       ;
>   */
>   
> +/* Type 5 opcodes are a subset of Type2 opcodes, and return a constant */
> +
>   Type5Opcode
>       : ResourceTemplateTerm          {}
>       | UnicodeTerm                   {}
> @@ -676,1103 +744,21 @@ Type6Opcode
>       | DerefOfTerm                   {}
>       | IndexTerm                     {}
>       | IndexExpTerm                  {}
> +//    | StructureIndexTerm            {}
> +//    | StructurePointerTerm          {}
>       | MethodInvocationTerm          {}
>       ;
>   
>   
>   /*******************************************************************************
>    *
> - * ASL Primary Terms
> - *
> - ******************************************************************************/
> -
> -AccessAsTerm
> -    : PARSEOP_ACCESSAS '('
> -        AccessTypeKeyword
> -        OptionalAccessAttribTerm
> -        ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
> -    | PARSEOP_ACCESSAS '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -AcquireTerm
> -    : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
> -        SuperName
> -        ',' WordConstExpr
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
> -    | PARSEOP_ACQUIRE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -AddTerm
> -    : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_ADD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -AliasTerm
> -    : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
> -        NameString
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
> -                                        TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_ALIAS '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -AndTerm
> -    : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_AND '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ArgTerm
> -    : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
> -    | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
> -    | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
> -    | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
> -    | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
> -    | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
> -    | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
> -    ;
> -
> -BankFieldTerm
> -    : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
> -        NameString
> -        NameStringItem
> -        TermArgItem
> -        ',' AccessTypeKeyword
> -        ',' LockRuleKeyword
> -        ',' UpdateRuleKeyword
> -        ')' '{'
> -            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
> -    | PARSEOP_BANKFIELD '('
> -        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -BreakTerm
> -    : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
> -    ;
> -
> -BreakPointTerm
> -    : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
> -    ;
> -
> -BufferTerm
> -    : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
> -        OptionalBufferLength
> -        ')' '{'
> -            BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_BUFFER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -BufferTermData
> -    : ByteList                      {}
> -    | StringData                    {}
> -    ;
> -
> -CaseTerm
> -    : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
> -        DataObject
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_CASE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ConcatTerm
> -    : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_CONCATENATE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ConcatResTerm
> -    : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_CONCATENATERESTEMPLATE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ConnectionTerm
> -    : PARSEOP_CONNECTION '('
> -        NameString
> -        ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
> -    | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
> -        ResourceMacroTerm
> -        ')'                         {$$ = TrLinkChildren ($<n>3, 1,
> -                                            TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
> -                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> -                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> -                                                $4));}
> -    | PARSEOP_CONNECTION '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CondRefOfTerm
> -    : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
> -        SuperName
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_CONDREFOF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ContinueTerm
> -    : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
> -    ;
> -
> -CopyObjectTerm
> -    : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
> -        TermArg
> -        ',' SimpleTarget
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> -    | PARSEOP_COPYOBJECT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CreateBitFieldTerm
> -    : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
> -        TermArg
> -        TermArgItem
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_CREATEBITFIELD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CreateByteFieldTerm
> -    : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
> -        TermArg
> -        TermArgItem
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_CREATEBYTEFIELD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CreateDWordFieldTerm
> -    : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
> -        TermArg
> -        TermArgItem
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_CREATEDWORDFIELD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CreateFieldTerm
> -    : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
> -        TermArg
> -        TermArgItem
> -        TermArgItem
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_CREATEFIELD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CreateQWordFieldTerm
> -    : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
> -        TermArg
> -        TermArgItem
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_CREATEQWORDFIELD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -CreateWordFieldTerm
> -    : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
> -        TermArg
> -        TermArgItem
> -        NameStringItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_CREATEWORDFIELD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -DataRegionTerm
> -    : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
> -        NameString
> -        TermArgItem
> -        TermArgItem
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
> -    | PARSEOP_DATATABLEREGION '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -DebugTerm
> -    : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
> -    ;
> -
> -DecTerm
> -    : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_DECREMENT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -DefaultTerm
> -    : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
> -        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_DEFAULT '{'
> -        error '}'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -DerefOfTerm
> -    : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
> -        TermArg
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_DEREFOF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -DeviceTerm
> -    : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
> -        NameString
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> -    | PARSEOP_DEVICE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -DivideTerm
> -    : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
> -    | PARSEOP_DIVIDE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -EISAIDTerm
> -    : PARSEOP_EISAID '('
> -        StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
> -    | PARSEOP_EISAID '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ElseIfTerm
> -    : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
> -    ;
> -
> -ElseTerm
> -    :                               {$$ = NULL;}
> -    | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> -        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
> -
> -    | PARSEOP_ELSE '{'
> -        error '}'                   {$$ = AslDoError(); yyclearin;}
> -
> -    | PARSEOP_ELSE
> -        error                       {$$ = AslDoError(); yyclearin;}
> -
> -    | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> -        TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> -        ')' '{'
> -            TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
> -        ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
> -                                    {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
> -
> -    | PARSEOP_ELSEIF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -
> -    | PARSEOP_ELSEIF
> -        error                       {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -EventTerm
> -    : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
> -        NameString
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
> -    | PARSEOP_EVENT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ExternalTerm
> -    : PARSEOP_EXTERNAL '('
> -        NameString
> -        OptionalObjectTypeKeyword
> -        OptionalParameterTypePackage
> -        OptionalParameterTypesPackage
> -        ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
> -    | PARSEOP_EXTERNAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -FatalTerm
> -    : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
> -        ByteConstExpr
> -        ',' DWordConstExpr
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
> -    | PARSEOP_FATAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -FieldTerm
> -    : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
> -        NameString
> -        ',' AccessTypeKeyword
> -        ',' LockRuleKeyword
> -        ',' UpdateRuleKeyword
> -        ')' '{'
> -            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
> -    | PARSEOP_FIELD '('
> -        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -FindSetLeftBitTerm
> -    : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_FINDSETLEFTBIT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -FindSetRightBitTerm
> -    : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_FINDSETRIGHTBIT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -    /* Convert a For() loop to a While() loop */
> -ForTerm
> -    : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> -        OptionalTermArg ','         {}
> -        OptionalPredicate ','
> -        OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
> -                                        TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
> -        ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
> -                                    {$<n>$ = TrLinkPeerNode ($13,$9);
> -                                        $$ = $<n>10;}
> -    ;
> -
> -OptionalPredicate
> -    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
> -FprintfTerm
> -    : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
> -        TermArg ','
> -        StringData
> -        PrintfArgList
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
> -    | PARSEOP_FPRINTF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -FromBCDTerm
> -    : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_FROMBCD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -FunctionTerm
> -    : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> -        NameString
> -        OptionalParameterTypePackage
> -        OptionalParameterTypesPackage
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
> -                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
> -                                        TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
> -                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
> -    | PARSEOP_FUNCTION '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -IfTerm
> -    : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> -        TermArg
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -
> -    | PARSEOP_IF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -IncludeTerm
> -    : PARSEOP_INCLUDE '('
> -        String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
> -                                        FlOpenIncludeFile ($3);}
> -    ;
> -
> -IncludeEndTerm
> -    : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
> -    ;
> -
> -IncTerm
> -    : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_INCREMENT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -IndexFieldTerm
> -    : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
> -        NameString
> -        NameStringItem
> -        ',' AccessTypeKeyword
> -        ',' LockRuleKeyword
> -        ',' UpdateRuleKeyword
> -        ')' '{'
> -            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
> -    | PARSEOP_INDEXFIELD '('
> -        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -IndexTerm
> -    : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_INDEX '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LAndTerm
> -    : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_LAND '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LEqualTerm
> -    : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_LEQUAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LGreaterEqualTerm
> -    : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> -    | PARSEOP_LGREATEREQUAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LGreaterTerm
> -    : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_LGREATER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LLessEqualTerm
> -    : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> -    | PARSEOP_LLESSEQUAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LLessTerm
> -    : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_LLESS '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LNotEqualTerm
> -    : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> -    | PARSEOP_LNOTEQUAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LNotTerm
> -    : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
> -        TermArg
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_LNOT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LoadTableTerm
> -    : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
> -        TermArg
> -        TermArgItem
> -        TermArgItem
> -        OptionalListString
> -        OptionalListString
> -        OptionalReference
> -        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
> -    | PARSEOP_LOADTABLE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LoadTerm
> -    : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
> -        NameString
> -        RequiredTarget
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_LOAD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -LocalTerm
> -    : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
> -    | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
> -    | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
> -    | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
> -    | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
> -    | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
> -    | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
> -    | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
> -    ;
> -
> -LOrTerm
> -    : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
> -        TermArg
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_LOR '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -MatchTerm
> -    : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
> -        TermArg
> -        ',' MatchOpKeyword
> -        TermArgItem
> -        ',' MatchOpKeyword
> -        TermArgItem
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
> -    | PARSEOP_MATCH '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -MethodTerm
> -    : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> -        NameString
> -        OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
> -        OptionalSerializeRuleKeyword
> -        OptionalByteConstExpr
> -        OptionalParameterTypePackage
> -        OptionalParameterTypesPackage
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
> -    | PARSEOP_METHOD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -MidTerm
> -    : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
> -        TermArg
> -        TermArgItem
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
> -    | PARSEOP_MID '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ModTerm
> -    : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_MOD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -MultiplyTerm
> -    : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_MULTIPLY '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -MutexTerm
> -    : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
> -        NameString
> -        ',' ByteConstExpr
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> -    | PARSEOP_MUTEX '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -NameTerm
> -    : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
> -        NameString
> -        ',' DataObject
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> -    | PARSEOP_NAME '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -NAndTerm
> -    : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_NAND '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -NoOpTerm
> -    : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
> -    ;
> -
> -NOrTerm
> -    : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_NOR '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -NotifyTerm
> -    : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
> -        SuperName
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_NOTIFY '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -NotTerm
> -    : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_NOT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ObjectTypeTerm
> -    : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
> -        ObjectTypeName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_OBJECTTYPE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -OffsetTerm
> -    : PARSEOP_OFFSET '('
> -        AmlPackageLengthTerm
> -        ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
> -    | PARSEOP_OFFSET '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -OpRegionTerm
> -    : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
> -        NameString
> -        ',' OpRegionSpaceIdTerm
> -        TermArgItem
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
> -    | PARSEOP_OPERATIONREGION '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -OpRegionSpaceIdTerm
> -    : RegionSpaceKeyword            {}
> -    | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> -    ;
> -
> -OrTerm
> -    : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_OR '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -PackageTerm
> -    : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
> -        VarPackageLengthTerm
> -        ')' '{'
> -            PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_PACKAGE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -PowerResTerm
> -    : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
> -        NameString
> -        ',' ByteConstExpr
> -        ',' WordConstExpr
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
> -    | PARSEOP_POWERRESOURCE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -PrintfTerm
> -    : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
> -        StringData
> -        PrintfArgList
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_PRINTF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -PrintfArgList
> -    :                               {$$ = NULL;}
> -    | TermArg                       {$$ = $1;}
> -    | PrintfArgList ','
> -       TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
> -    ;
> -
> -ProcessorTerm
> -    : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
> -        NameString
> -        ',' ByteConstExpr
> -        OptionalDWordConstExpr
> -        OptionalByteConstExpr
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
> -    | PARSEOP_PROCESSOR '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -RawDataBufferTerm
> -    : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
> -        OptionalWordConst
> -        ')' '{'
> -            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_DATABUFFER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -/*
> - * In RefOf, the node isn't really a target, but we can't keep track of it after
> - * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
> - */
> -RefOfTerm
> -    : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
> -    | PARSEOP_REFOF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ReleaseTerm
> -    : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_RELEASE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ResetTerm
> -    : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_RESET '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ReturnTerm
> -    : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
> -        OptionalReturnArg
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
> -    | PARSEOP_RETURN '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ScopeTerm
> -    : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
> -        NameString
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> -    | PARSEOP_SCOPE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ShiftLeftTerm
> -    : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_SHIFTLEFT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ShiftRightTerm
> -    : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_SHIFTRIGHT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -SignalTerm
> -    : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_SIGNAL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -SizeOfTerm
> -    : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_SIZEOF '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -SleepTerm
> -    : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
> -        TermArg
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_SLEEP '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -StallTerm
> -    : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
> -        TermArg
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_STALL '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -StoreTerm
> -    : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
> -        TermArg
> -        ',' SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> -    | PARSEOP_STORE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -SubtractTerm
> -    : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_SUBTRACT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -SwitchTerm
> -    : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
> -        TermArg
> -        ')' '{'
> -            CaseDefaultTermList '}'
> -                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_SWITCH '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ThermalZoneTerm
> -    : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
> -        NameString
> -        ')' '{'
> -            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> -    | PARSEOP_THERMALZONE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -TimerTerm
> -    : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
> -        ')'                         {$$ = TrLinkChildren ($<n>3,0);}
> -    | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
> -    | PARSEOP_TIMER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToBCDTerm
> -    : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_TOBCD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToBufferTerm
> -    : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_TOBUFFER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToDecimalStringTerm
> -    : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_TODECIMALSTRING '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToHexStringTerm
> -    : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_TOHEXSTRING '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToIntegerTerm
> -    : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
> -        TermArg
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_TOINTEGER '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToPLDTerm
> -    : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
> -        PldKeywordList
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_TOPLD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -PldKeywordList
> -    :                               {$$ = NULL;}
> -    | PldKeyword
> -        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
> -    | PldKeyword
> -        PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
> -    | PldKeywordList ','            /* Allows a trailing comma at list end */
> -    | PldKeywordList ','
> -        PldKeyword
> -        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
> -    | PldKeywordList ','
> -        PldKeyword
> -        PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
> -    ;
> -
> -
> -ToStringTerm
> -    : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
> -        TermArg
> -        OptionalCount
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_TOSTRING '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -ToUUIDTerm
> -    : PARSEOP_TOUUID '('
> -        StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
> -    | PARSEOP_TOUUID '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -UnicodeTerm
> -    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
> -        StringData
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
> -    | PARSEOP_UNICODE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -UnloadTerm
> -    : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
> -        SuperName
> -        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_UNLOAD '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -WaitTerm
> -    : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
> -        SuperName
> -        TermArgItem
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> -    | PARSEOP_WAIT '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -XOrTerm
> -    : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
> -        TermArg
> -        TermArgItem
> -        Target
> -        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
> -    | PARSEOP_XOR '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -WhileTerm
> -    : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> -        TermArg
> -        ')' '{' TermList '}'
> -                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> -    | PARSEOP_WHILE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
> -
> -/*******************************************************************************
> - *
>    * ASL Helper Terms
>    *
>    ******************************************************************************/
>   
>   AmlPackageLengthTerm
> -    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
> +    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,
> +                                        (ACPI_PARSE_OBJECT *) $1);}
>       ;
>   
>   NameStringItem
> @@ -1792,7 +778,8 @@ OptionalReference
>       ;
>   
>   OptionalReturnArg
> -    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
> +    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
> +                                            NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
>       | TermArg                       {$$ = $1;}
>       ;
>   
> @@ -1807,11 +794,6 @@ OptionalTermArg
>       | TermArg                       {$$ = $1;}
>       ;
>   
> -OptionalBufferLength
> -    :                               {$$ = NULL;}
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
>   OptionalWordConst
>       :                               {$$ = NULL;}
>       | WordConst                     {$$ = $1;}
> diff --git a/src/acpica/source/compiler/asltokens.y b/src/acpica/source/compiler/asltokens.y
> index 993d0f1..04e21ff 100644
> --- a/src/acpica/source/compiler/asltokens.y
> +++ b/src/acpica/source/compiler/asltokens.y
> @@ -125,6 +125,16 @@ NoEcho('
>    *
>    *****************************************************************************/
>   
> +/*
> + * Most tokens are defined to return <i>, which is a UINT64.
> + *
> + * These tokens return <s>, a pointer to the associated lexed string:
> + *
> + *  PARSEOP_NAMESEG
> + *  PARSEOP_NAMESTRING
> + *  PARSEOP_STRING_LITERAL
> + *  PARSEOP_STRUCTURE_NAMESTRING
> + */
>   %token <i> PARSEOP_ACCESSAS
>   %token <i> PARSEOP_ACCESSATTRIB_BLOCK
>   %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
> @@ -538,12 +548,42 @@ NoEcho('
>   %token <i> PARSEOP_FPRINTF
>   %token <i> PARSEOP_FOR
>   
> +/* Structures */
> +
> +%token <i> PARSEOP_STRUCTURE
> +%token <s> PARSEOP_STRUCTURE_NAMESTRING
> +%token <i> PARSEOP_STRUCTURE_TAG
> +%token <i> PARSEOP_STRUCTURE_ELEMENT
> +%token <i> PARSEOP_STRUCTURE_INSTANCE
> +%token <i> PARSEOP_STRUCTURE_REFERENCE
> +%token <i> PARSEOP_STRUCTURE_POINTER
> +
> +/* Top level */
> +
> +%token <i> PARSEOP_ASL_CODE
> +
> +
> +/*******************************************************************************
> + *
> + * Tokens below are not in the aslmap.c file
> + *
> + ******************************************************************************/
> +
> +
> +/* Tokens below this are not in the aslmap.c file */
> +
>   /* Specific parentheses tokens are not used at this time */
>              /* PARSEOP_EXP_PAREN_OPEN */
>              /* PARSEOP_EXP_PAREN_CLOSE */
>   
> +/* ASL+ variable creation */
> +
> +%token <i> PARSEOP_INTEGER_TYPE
> +%token <i> PARSEOP_STRING_TYPE
> +%token <i> PARSEOP_BUFFER_TYPE
> +%token <i> PARSEOP_PACKAGE_TYPE
> +%token <i> PARSEOP_REFERENCE_TYPE
>   
> -%token <i> PARSEOP_ASL_CODE
>   
>   /*
>    * Special functions. These should probably stay at the end of this
> diff --git a/src/acpica/source/compiler/asltypes.y b/src/acpica/source/compiler/asltypes.y
> index 118ad57..811bed6 100644
> --- a/src/acpica/source/compiler/asltypes.y
> +++ b/src/acpica/source/compiler/asltypes.y
> @@ -350,7 +350,6 @@ NoEcho('
>   %type <n> PackageElement
>   %type <n> PackageList
>   %type <n> PackageTerm
> -%type <n> VarPackageLengthTerm
>   
>   /* Macros */
>   
> @@ -422,9 +421,9 @@ NoEcho('
>   %type <n> OptionalAddressRange
>   %type <n> OptionalBitsPerByte
>   %type <n> OptionalBuffer_Last
> -%type <n> OptionalBufferLength
>   %type <n> OptionalByteConstExpr
>   %type <n> OptionalCount
> +%type <n> OptionalDataCount
>   %type <n> OptionalDecodeType
>   %type <n> OptionalDevicePolarity
>   %type <n> OptionalDWordConstExpr
> @@ -441,6 +440,7 @@ NoEcho('
>   %type <n> OptionalObjectTypeKeyword
>   %type <n> OptionalParameterTypePackage
>   %type <n> OptionalParameterTypesPackage
> +%type <n> OptionalParentheses
>   %type <n> OptionalParityType
>   %type <n> OptionalPredicate
>   %type <n> OptionalQWordConstExpr
> @@ -465,8 +465,53 @@ NoEcho('
>   %type <n> OptionalXferSize
>   
>   /*
> - * C-style expression parser
> + * ASL+ (C-style) parser
>    */
> +
> +/* Expressions and symbolic operators */
> +
>   %type <n> Expression
>   %type <n> EqualsTerm
>   %type <n> IndexExpTerm
> +
> +/* ASL+ Named object declaration support */
> +/*
> +%type <n> NameTermAslPlus
> +
> +%type <n> BufferBegin
> +%type <n> BufferEnd
> +%type <n> PackageBegin
> +%type <n> PackageEnd
> +%type <n> OptionalLength
> +*/
> +/* ASL+ Structure declarations */
> +/*
> +%type <n> StructureTerm
> +%type <n> StructureTermBegin
> +%type <n> StructureType
> +%type <n> StructureTag
> +%type <n> StructureElementList
> +%type <n> StructureElement
> +%type <n> StructureElementType
> +%type <n> OptionalStructureElementType
> +%type <n> StructureId
> +*/
> +/* Structure instantiantion */
> +/*
> +%type <n> StructureInstanceTerm
> +%type <n> StructureTagReference
> +%type <n> StructureInstanceEnd
> +*/
> +/* Pseudo-instantiantion for method Args/Locals */
> +/*
> +%type <n> MethodStructureTerm
> +%type <n> LocalStructureName
> +*/
> +/* Direct structure references via the Index operator */
> +/*
> +%type <n> StructureReference
> +%type <n> StructureIndexTerm
> +%type <n> StructurePointerTerm
> +%type <n> StructurePointerReference
> +%type <n> OptionalDefinePointer
> +*/
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index eb85ddc..1072f52 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -681,6 +681,7 @@ extern const unsigned char  TemplateMtmr[];
>   extern const unsigned char  TemplateNfit[];
>   extern const unsigned char  TemplatePcct[];
>   extern const unsigned char  TemplatePmtt[];
> +extern const unsigned char  TemplateRasf[];
>   extern const unsigned char  TemplateRsdt[];
>   extern const unsigned char  TemplateS3pt[];
>   extern const unsigned char  TemplateSbst[];
> diff --git a/src/acpica/source/compiler/dttable.c b/src/acpica/source/compiler/dttable.c
> index 561c5ce..ee3d26d 100644
> --- a/src/acpica/source/compiler/dttable.c
> +++ b/src/acpica/source/compiler/dttable.c
> @@ -201,9 +201,12 @@ DtCompileFadt (
>       DT_SUBTABLE             *ParentTable;
>       DT_FIELD                **PFieldList = (DT_FIELD **) List;
>       ACPI_TABLE_HEADER       *Table;
> -    UINT8                   Revision;
> +    UINT8                   FadtRevision;
> +    UINT32                  i;
>   
>   
> +    /* Minimum table is the FADT version 1 (ACPI 1.0) */
> +
>       Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt1,
>           &Subtable, TRUE);
>       if (ACPI_FAILURE (Status))
> @@ -215,53 +218,48 @@ DtCompileFadt (
>       DtInsertSubtable (ParentTable, Subtable);
>   
>       Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
> -    Revision = Table->Revision;
> +    FadtRevision = Table->Revision;
> +
> +    /* Revision 0 and 2 are illegal */
>   
> -    if (Revision == 2)
> +    if ((FadtRevision == 0) ||
> +        (FadtRevision == 2))
>       {
> -        Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt2,
> -            &Subtable, TRUE);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return (Status);
> -        }
> +        DtError (ASL_ERROR, 0, NULL,
> +            "Invalid value for FADT revision");
>   
> -        DtInsertSubtable (ParentTable, Subtable);
> +        return (AE_BAD_VALUE);
>       }
> -    else if (Revision >= 2)
> +
> +    /* Revision out of supported range? */
> +
> +    if (FadtRevision > ACPI_FADT_MAX_VERSION)
>       {
> -        Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt3,
> -            &Subtable, TRUE);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return (Status);
> -        }
> +        DtError (ASL_ERROR, 0, NULL,
> +            "Unknown or unsupported value for FADT revision");
>   
> -        DtInsertSubtable (ParentTable, Subtable);
> +        return (AE_BAD_VALUE);
> +    }
> +
> +    /* Compile individual sub-parts of the FADT, per-revision */
>   
> -        if (Revision >= 5)
> +    for (i = 3; i <= ACPI_FADT_MAX_VERSION; i++)
> +    {
> +        if (i > FadtRevision)
>           {
> -            Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5,
> -                &Subtable, TRUE);
> -            if (ACPI_FAILURE (Status))
> -            {
> -                return (Status);
> -            }
> -
> -            DtInsertSubtable (ParentTable, Subtable);
> +            break;
>           }
>   
> -        if (Revision >= 6)
> +        /* Compile the fields specific to this FADT revision */
> +
> +        Status = DtCompileTable (PFieldList, FadtRevisionInfo[i],
> +            &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
>           {
> -            Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt6,
> -                &Subtable, TRUE);
> -            if (ACPI_FAILURE (Status))
> -            {
> -                return (Status);
> -            }
> -
> -            DtInsertSubtable (ParentTable, Subtable);
> +            return (Status);
>           }
> +
> +        DtInsertSubtable (ParentTable, Subtable);
>       }
>   
>       return (AE_OK);
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index e420ec4..8bf873b 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -978,6 +978,16 @@ const unsigned char TemplatePmtt[] =
>       0x00,0x00,0x00,0x00                       /* 000000B0    "...."     */
>   };
>   
> +const unsigned char TemplateRasf[] =
> +{
> +    0x52,0x41,0x53,0x46,0x30,0x00,0x00,0x00,  /* 00000000    "RASF0..." */
> +    0x01,0x31,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".1INTEL " */
> +    0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x27,0x05,0x16,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "'.. ...." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000028    "........" */
> +};
> +
>   const unsigned char TemplateRsdp[] =
>   {
>       0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20,  /* 00000000    "RSD PTR " */
> diff --git a/src/acpica/source/compiler/dtutils.c b/src/acpica/source/compiler/dtutils.c
> index 6ca418c..fa12b51 100644
> --- a/src/acpica/source/compiler/dtutils.c
> +++ b/src/acpica/source/compiler/dtutils.c
> @@ -439,6 +439,7 @@ DtGetFieldType (
>       case ACPI_DMT_RAW_BUFFER:
>       case ACPI_DMT_BUF7:
>       case ACPI_DMT_BUF10:
> +    case ACPI_DMT_BUF12:
>       case ACPI_DMT_BUF16:
>       case ACPI_DMT_BUF128:
>       case ACPI_DMT_PCI_PATH:
> @@ -688,6 +689,11 @@ DtGetFieldLength (
>           ByteLength = 10;
>           break;
>   
> +    case ACPI_DMT_BUF12:
> +
> +        ByteLength = 12;
> +        break;
> +
>       case ACPI_DMT_BUF16:
>       case ACPI_DMT_UUID:
>   
> diff --git a/src/acpica/source/components/debugger/dbfileio.c b/src/acpica/source/components/debugger/dbfileio.c
> index d7942b7..ecc202f 100644
> --- a/src/acpica/source/components/debugger/dbfileio.c
> +++ b/src/acpica/source/components/debugger/dbfileio.c
> @@ -118,15 +118,15 @@
>   #include "accommon.h"
>   #include "acdebug.h"
>   #include "actables.h"
> -#include <stdio.h>
> -#ifdef ACPI_APPLICATION
> -#include "acapps.h"
> -#endif
>   
>   #define _COMPONENT          ACPI_CA_DEBUGGER
>           ACPI_MODULE_NAME    ("dbfileio")
>   
>   
> +#ifdef ACPI_APPLICATION
> +#include "acapps.h"
> +
> +
>   #ifdef ACPI_DEBUGGER
>   /*******************************************************************************
>    *
> @@ -145,8 +145,6 @@ AcpiDbCloseDebugFile (
>       void)
>   {
>   
> -#ifdef ACPI_APPLICATION
> -
>       if (AcpiGbl_DebugFile)
>       {
>          fclose (AcpiGbl_DebugFile);
> @@ -155,7 +153,6 @@ AcpiDbCloseDebugFile (
>          AcpiOsPrintf ("Debug output file %s closed\n",
>               AcpiGbl_DbDebugFilename);
>       }
> -#endif
>   }
>   
>   
> @@ -176,8 +173,6 @@ AcpiDbOpenDebugFile (
>       char                    *Name)
>   {
>   
> -#ifdef ACPI_APPLICATION
> -
>       AcpiDbCloseDebugFile ();
>       AcpiGbl_DebugFile = fopen (Name, "w+");
>       if (!AcpiGbl_DebugFile)
> @@ -190,8 +185,6 @@ AcpiDbOpenDebugFile (
>       strncpy (AcpiGbl_DbDebugFilename, Name,
>           sizeof (AcpiGbl_DbDebugFilename));
>       AcpiGbl_DbOutputToFile = TRUE;
> -
> -#endif
>   }
>   #endif
>   
> @@ -241,8 +234,7 @@ AcpiDbLoadTables (
>               return (Status);
>           }
>   
> -        fprintf (stderr,
> -            "Acpi table [%4.4s] successfully installed and loaded\n",
> +        AcpiOsPrintf ("Acpi table [%4.4s] successfully installed and loaded\n",
>               Table->Signature);
>   
>           TableListHead = TableListHead->Next;
> @@ -250,3 +242,4 @@ AcpiDbLoadTables (
>   
>       return (AE_OK);
>   }
> +#endif
> diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c
> index 413b2fd..6fb738d 100644
> --- a/src/acpica/source/components/tables/tbfadt.c
> +++ b/src/acpica/source/components/tables/tbfadt.c
> @@ -588,17 +588,19 @@ AcpiTbConvertFadt (
>   
>   
>       /*
> -     * For ACPI 1.0 FADTs (revision 1 or 2), ensure that reserved fields which
> +     * For ACPI 1.0 FADTs (revision 1), ensure that reserved fields which
>        * should be zero are indeed zero. This will workaround BIOSs that
>        * inadvertently place values in these fields.
>        *
>        * The ACPI 1.0 reserved fields that will be zeroed are the bytes located
>        * at offset 45, 55, 95, and the word located at offset 109, 110.
>        *
> -     * Note: The FADT revision value is unreliable. Only the length can be
> -     * trusted.
> +     * Note: The FADT revision value is unreliable because of BIOS errors.
> +     * The table length is instead used as the final word on the version.
> +     *
> +     * Note: FADT revision 3 is the ACPI 2.0 version of the FADT.
>        */
> -    if (AcpiGbl_FADT.Header.Length <= ACPI_FADT_V2_SIZE)
> +    if (AcpiGbl_FADT.Header.Length <= ACPI_FADT_V3_SIZE)
>       {
>           AcpiGbl_FADT.PreferredProfile = 0;
>           AcpiGbl_FADT.PstateControl = 0;
> diff --git a/src/acpica/source/components/tables/tbutils.c b/src/acpica/source/components/tables/tbutils.c
> index fd1d427..f270b94 100644
> --- a/src/acpica/source/components/tables/tbutils.c
> +++ b/src/acpica/source/components/tables/tbutils.c
> @@ -345,7 +345,7 @@ AcpiTbGetRootTableEntry (
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiTbParseRootTable (
>       ACPI_PHYSICAL_ADDRESS   RsdpAddress)
>   {
> diff --git a/src/acpica/source/components/tables/tbxface.c b/src/acpica/source/components/tables/tbxface.c
> index 09753bf..9ac9dc1 100644
> --- a/src/acpica/source/components/tables/tbxface.c
> +++ b/src/acpica/source/components/tables/tbxface.c
> @@ -175,7 +175,7 @@ AcpiAllocateRootTable (
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInitializeTables (
>       ACPI_TABLE_DESC         *InitialTableArray,
>       UINT32                  InitialTableCount,
> @@ -251,7 +251,7 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInitializeTables)
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiReallocateRootTable (
>       void)
>   {
> diff --git a/src/acpica/source/components/tables/tbxfload.c b/src/acpica/source/components/tables/tbxfload.c
> index 6c6f2be..6ffc3cc 100644
> --- a/src/acpica/source/components/tables/tbxfload.c
> +++ b/src/acpica/source/components/tables/tbxfload.c
> @@ -137,7 +137,7 @@
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiLoadTables (
>       void)
>   {
> @@ -372,7 +372,7 @@ UnlockAndExit:
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInstallTable (
>       ACPI_PHYSICAL_ADDRESS   Address,
>       BOOLEAN                 Physical)
> diff --git a/src/acpica/source/components/tables/tbxfroot.c b/src/acpica/source/components/tables/tbxfroot.c
> index c5275c8..abd29a8 100644
> --- a/src/acpica/source/components/tables/tbxfroot.c
> +++ b/src/acpica/source/components/tables/tbxfroot.c
> @@ -228,7 +228,7 @@ AcpiTbValidateRsdp (
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiFindRootPointer (
>       ACPI_PHYSICAL_ADDRESS   *TableAddress)
>   {
> @@ -334,7 +334,7 @@ AcpiFindRootPointer (
>       return_ACPI_STATUS (AE_NOT_FOUND);
>   }
>   
> -ACPI_EXPORT_SYMBOL (AcpiFindRootPointer)
> +ACPI_EXPORT_SYMBOL_INIT (AcpiFindRootPointer)
>   
>   
>   /*******************************************************************************
> diff --git a/src/acpica/source/components/utilities/utbuffer.c b/src/acpica/source/components/utilities/utbuffer.c
> index 4a50e9e..fe5c7d5 100644
> --- a/src/acpica/source/components/utilities/utbuffer.c
> +++ b/src/acpica/source/components/utilities/utbuffer.c
> @@ -336,7 +336,7 @@ AcpiUtDumpBufferToFile (
>   
>       if (!Buffer)
>       {
> -        AcpiUtFilePrintf (File, "Null Buffer Pointer in DumpBuffer!\n");
> +        fprintf (File, "Null Buffer Pointer in DumpBuffer!\n");
>           return;
>       }
>   
> @@ -351,7 +351,7 @@ AcpiUtDumpBufferToFile (
>       {
>           /* Print current offset */
>   
> -        AcpiUtFilePrintf (File, "%6.4X: ", (BaseOffset + i));
> +        fprintf (File, "%6.4X: ", (BaseOffset + i));
>   
>           /* Print 16 hex chars */
>   
> @@ -361,7 +361,7 @@ AcpiUtDumpBufferToFile (
>               {
>                   /* Dump fill spaces */
>   
> -                AcpiUtFilePrintf (File, "%*s", ((Display * 2) + 1), " ");
> +                fprintf (File, "%*s", ((Display * 2) + 1), " ");
>                   j += Display;
>                   continue;
>               }
> @@ -371,28 +371,28 @@ AcpiUtDumpBufferToFile (
>               case DB_BYTE_DISPLAY:
>               default:    /* Default is BYTE display */
>   
> -                AcpiUtFilePrintf (File, "%02X ", Buffer[(ACPI_SIZE) i + j]);
> +                fprintf (File, "%02X ", Buffer[(ACPI_SIZE) i + j]);
>                   break;
>   
>               case DB_WORD_DISPLAY:
>   
>                   ACPI_MOVE_16_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
> -                AcpiUtFilePrintf (File, "%04X ", Temp32);
> +                fprintf (File, "%04X ", Temp32);
>                   break;
>   
>               case DB_DWORD_DISPLAY:
>   
>                   ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
> -                AcpiUtFilePrintf (File, "%08X ", Temp32);
> +                fprintf (File, "%08X ", Temp32);
>                   break;
>   
>               case DB_QWORD_DISPLAY:
>   
>                   ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
> -                AcpiUtFilePrintf (File, "%08X", Temp32);
> +                fprintf (File, "%08X", Temp32);
>   
>                   ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j + 4]);
> -                AcpiUtFilePrintf (File, "%08X ", Temp32);
> +                fprintf (File, "%08X ", Temp32);
>                   break;
>               }
>   
> @@ -403,29 +403,29 @@ AcpiUtDumpBufferToFile (
>            * Print the ASCII equivalent characters but watch out for the bad
>            * unprintable ones (printable chars are 0x20 through 0x7E)
>            */
> -        AcpiUtFilePrintf (File, " ");
> +        fprintf (File, " ");
>           for (j = 0; j < 16; j++)
>           {
>               if (i + j >= Count)
>               {
> -                AcpiUtFilePrintf (File, "\n");
> +                fprintf (File, "\n");
>                   return;
>               }
>   
>               BufChar = Buffer[(ACPI_SIZE) i + j];
>               if (isprint (BufChar))
>               {
> -                AcpiUtFilePrintf (File, "%c", BufChar);
> +                fprintf (File, "%c", BufChar);
>               }
>               else
>               {
> -                AcpiUtFilePrintf (File, ".");
> +                fprintf (File, ".");
>               }
>           }
>   
>           /* Done with that line. */
>   
> -        AcpiUtFilePrintf (File, "\n");
> +        fprintf (File, "\n");
>           i += 16;
>       }
>   
> diff --git a/src/acpica/source/components/utilities/utdebug.c b/src/acpica/source/components/utilities/utdebug.c
> index 4d2b306..995d45c 100644
> --- a/src/acpica/source/components/utilities/utdebug.c
> +++ b/src/acpica/source/components/utilities/utdebug.c
> @@ -780,33 +780,3 @@ AcpiTracePoint (
>   ACPI_EXPORT_SYMBOL (AcpiTracePoint)
>   
>   #endif
> -
> -
> -#ifdef ACPI_APPLICATION
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiLogError
> - *
> - * PARAMETERS:  Format              - Printf format field
> - *              ...                 - Optional printf arguments
> - *
> - * RETURN:      None
> - *
> - * DESCRIPTION: Print error message to the console, used by applications.
> - *
> - ******************************************************************************/
> -
> -void  ACPI_INTERNAL_VAR_XFACE
> -AcpiLogError (
> -    const char              *Format,
> -    ...)
> -{
> -    va_list                 Args;
> -
> -    va_start (Args, Format);
> -    (void) AcpiUtFileVprintf (ACPI_FILE_ERR, Format, Args);
> -    va_end (Args);
> -}
> -
> -ACPI_EXPORT_SYMBOL (AcpiLogError)
> -#endif
> diff --git a/src/acpica/source/components/utilities/utinit.c b/src/acpica/source/components/utilities/utinit.c
> index 7a80f43..ba42ad2 100644
> --- a/src/acpica/source/components/utilities/utinit.c
> +++ b/src/acpica/source/components/utilities/utinit.c
> @@ -298,7 +298,7 @@ AcpiUtInitGlobals (
>       AcpiGbl_NextOwnerIdOffset           = 0;
>       AcpiGbl_DebuggerConfiguration       = DEBUGGER_THREADING;
>       AcpiGbl_OsiMutex                    = NULL;
> -    AcpiGbl_MaxLoopIterations           = 0xFFFF;
> +    AcpiGbl_MaxLoopIterations           = ACPI_MAX_LOOP_COUNT;
>   
>       /* Hardware oriented */
>   
> diff --git a/src/acpica/source/components/utilities/utpredef.c b/src/acpica/source/components/utilities/utpredef.c
> index 01196bb..a97064c 100644
> --- a/src/acpica/source/components/utilities/utpredef.c
> +++ b/src/acpica/source/components/utilities/utpredef.c
> @@ -268,8 +268,6 @@ AcpiUtGetExpectedReturnTypes (
>    ******************************************************************************/
>   
>   #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
> -#include <stdio.h>
> -#include <string.h>
>   
>   /* Local prototypes */
>   
> diff --git a/src/acpica/source/components/utilities/utprint.c b/src/acpica/source/components/utilities/utprint.c
> index 5ca859e..552656f 100644
> --- a/src/acpica/source/components/utilities/utprint.c
> +++ b/src/acpica/source/components/utilities/utprint.c
> @@ -488,7 +488,7 @@ AcpiUtFormatNumber (
>   
>   /*******************************************************************************
>    *
> - * FUNCTION:    AcpiUtVsnprintf
> + * FUNCTION:    vsnprintf
>    *
>    * PARAMETERS:  String              - String with boundary
>    *              Size                - Boundary of the string
> @@ -502,7 +502,7 @@ AcpiUtFormatNumber (
>    ******************************************************************************/
>   
>   int
> -AcpiUtVsnprintf (
> +vsnprintf (
>       char                    *String,
>       ACPI_SIZE               Size,
>       const char              *Format,
> @@ -785,7 +785,7 @@ AcpiUtVsnprintf (
>   
>   /*******************************************************************************
>    *
> - * FUNCTION:    AcpiUtSnprintf
> + * FUNCTION:    snprintf
>    *
>    * PARAMETERS:  String              - String with boundary
>    *              Size                - Boundary of the string
> @@ -798,7 +798,7 @@ AcpiUtVsnprintf (
>    ******************************************************************************/
>   
>   int
> -AcpiUtSnprintf (
> +snprintf (
>       char                    *String,
>       ACPI_SIZE               Size,
>       const char              *Format,
> @@ -809,7 +809,38 @@ AcpiUtSnprintf (
>   
>   
>       va_start (Args, Format);
> -    Length = AcpiUtVsnprintf (String, Size, Format, Args);
> +    Length = vsnprintf (String, Size, Format, Args);
> +    va_end (Args);
> +
> +    return (Length);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    sprintf
> + *
> + * PARAMETERS:  String              - String with boundary
> + *              Format, ...         - Standard printf format
> + *
> + * RETURN:      Number of bytes actually written.
> + *
> + * DESCRIPTION: Formatted output to a string.
> + *
> + ******************************************************************************/
> +
> +int
> +sprintf (
> +    char                    *String,
> +    const char              *Format,
> +    ...)
> +{
> +    va_list                 Args;
> +    int                     Length;
> +
> +
> +    va_start (Args, Format);
> +    Length = vsnprintf (String, ACPI_UINT32_MAX, Format, Args);
>       va_end (Args);
>   
>       return (Length);
> @@ -819,7 +850,69 @@ AcpiUtSnprintf (
>   #ifdef ACPI_APPLICATION
>   /*******************************************************************************
>    *
> - * FUNCTION:    AcpiUtFileVprintf
> + * FUNCTION:    vprintf
> + *
> + * PARAMETERS:  Format              - Standard printf format
> + *              Args                - Argument list
> + *
> + * RETURN:      Number of bytes actually written.
> + *
> + * DESCRIPTION: Formatted output to stdout using argument list pointer.
> + *
> + ******************************************************************************/
> +
> +int
> +vprintf (
> +    const char              *Format,
> +    va_list                 Args)
> +{
> +    ACPI_CPU_FLAGS          Flags;
> +    int                     Length;
> +
> +
> +    Flags = AcpiOsAcquireLock (AcpiGbl_PrintLock);
> +    Length = vsnprintf (AcpiGbl_PrintBuffer,
> +                sizeof (AcpiGbl_PrintBuffer), Format, Args);
> +
> +    (void) fwrite (AcpiGbl_PrintBuffer, Length, 1, ACPI_FILE_OUT);
> +    AcpiOsReleaseLock (AcpiGbl_PrintLock, Flags);
> +
> +    return (Length);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    printf
> + *
> + * PARAMETERS:  Format, ...         - Standard printf format
> + *
> + * RETURN:      Number of bytes actually written.
> + *
> + * DESCRIPTION: Formatted output to stdout.
> + *
> + ******************************************************************************/
> +
> +int
> +printf (
> +    const char              *Format,
> +    ...)
> +{
> +    va_list                 Args;
> +    int                     Length;
> +
> +
> +    va_start (Args, Format);
> +    Length = vprintf (Format, Args);
> +    va_end (Args);
> +
> +    return (Length);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    vfprintf
>    *
>    * PARAMETERS:  File                - File descriptor
>    *              Format              - Standard printf format
> @@ -832,8 +925,8 @@ AcpiUtSnprintf (
>    ******************************************************************************/
>   
>   int
> -AcpiUtFileVprintf (
> -    ACPI_FILE               File,
> +vfprintf (
> +    FILE                    *File,
>       const char              *Format,
>       va_list                 Args)
>   {
> @@ -842,10 +935,10 @@ AcpiUtFileVprintf (
>   
>   
>       Flags = AcpiOsAcquireLock (AcpiGbl_PrintLock);
> -    Length = AcpiUtVsnprintf (AcpiGbl_PrintBuffer,
> +    Length = vsnprintf (AcpiGbl_PrintBuffer,
>           sizeof (AcpiGbl_PrintBuffer), Format, Args);
>   
> -    (void) AcpiOsWriteFile (File, AcpiGbl_PrintBuffer, Length, 1);
> +    (void) fwrite (AcpiGbl_PrintBuffer, Length, 1, File);
>       AcpiOsReleaseLock (AcpiGbl_PrintLock, Flags);
>   
>       return (Length);
> @@ -854,7 +947,7 @@ AcpiUtFileVprintf (
>   
>   /*******************************************************************************
>    *
> - * FUNCTION:    AcpiUtFilePrintf
> + * FUNCTION:    fprintf
>    *
>    * PARAMETERS:  File                - File descriptor
>    *              Format, ...         - Standard printf format
> @@ -866,8 +959,8 @@ AcpiUtFileVprintf (
>    ******************************************************************************/
>   
>   int
> -AcpiUtFilePrintf (
> -    ACPI_FILE               File,
> +fprintf (
> +    FILE                    *File,
>       const char              *Format,
>       ...)
>   {
> @@ -876,7 +969,7 @@ AcpiUtFilePrintf (
>   
>   
>       va_start (Args, Format);
> -    Length = AcpiUtFileVprintf (File, Format, Args);
> +    Length = vfprintf (File, Format, Args);
>       va_end (Args);
>   
>       return (Length);
> diff --git a/src/acpica/source/components/utilities/uttrack.c b/src/acpica/source/components/utilities/uttrack.c
> index cd3495f..c3cb9b9 100644
> --- a/src/acpica/source/components/utilities/uttrack.c
> +++ b/src/acpica/source/components/utilities/uttrack.c
> @@ -179,14 +179,12 @@ AcpiUtCreateList (
>       ACPI_MEMORY_LIST        *Cache;
>   
>   
> -    Cache = AcpiOsAllocate (sizeof (ACPI_MEMORY_LIST));
> +    Cache = AcpiOsAllocateZeroed (sizeof (ACPI_MEMORY_LIST));
>       if (!Cache)
>       {
>           return (AE_NO_MEMORY);
>       }
>   
> -    memset (Cache, 0, sizeof (ACPI_MEMORY_LIST));
> -
>       Cache->ListName = ListName;
>       Cache->ObjectSize = ObjectSize;
>   
> diff --git a/src/acpica/source/components/utilities/utxface.c b/src/acpica/source/components/utilities/utxface.c
> index b616ed9..a8aeef6 100644
> --- a/src/acpica/source/components/utilities/utxface.c
> +++ b/src/acpica/source/components/utilities/utxface.c
> @@ -135,7 +135,7 @@
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiTerminate (
>       void)
>   {
> diff --git a/src/acpica/source/components/utilities/utxfinit.c b/src/acpica/source/components/utilities/utxfinit.c
> index c6a26d9..c6f875c 100644
> --- a/src/acpica/source/components/utilities/utxfinit.c
> +++ b/src/acpica/source/components/utilities/utxfinit.c
> @@ -144,7 +144,7 @@ AeDoObjectOverrides (
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInitializeSubsystem (
>       void)
>   {
> @@ -223,7 +223,7 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInitializeSubsystem)
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiEnableSubsystem (
>       UINT32                  Flags)
>   {
> @@ -335,7 +335,7 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiEnableSubsystem)
>    *
>    ******************************************************************************/
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInitializeObjects (
>       UINT32                  Flags)
>   {
> diff --git a/src/acpica/source/include/acapps.h b/src/acpica/source/include/acapps.h
> index b8ab5a3..d580245 100644
> --- a/src/acpica/source/include/acapps.h
> +++ b/src/acpica/source/include/acapps.h
> @@ -116,11 +116,9 @@
>   #ifndef _ACAPPS
>   #define _ACAPPS
>   
> -#include <stdio.h>
> -
> -#ifdef _MSC_VER                 /* disable some level-4 warnings */
> -#pragma warning(disable:4100)   /* warning C4100: unreferenced formal parameter */
> -#endif
> +#ifdef ACPI_USE_STANDARD_HEADERS
> +#include <sys/stat.h>
> +#endif /* ACPI_USE_STANDARD_HEADERS */
>   
>   /* Common info for tool signons */
>   
> @@ -157,13 +155,13 @@
>   /* Macros for usage messages */
>   
>   #define ACPI_USAGE_HEADER(Usage) \
> -    AcpiOsPrintf ("Usage: %s\nOptions:\n", Usage);
> +    printf ("Usage: %s\nOptions:\n", Usage);
>   
>   #define ACPI_USAGE_TEXT(Description) \
> -    AcpiOsPrintf (Description);
> +    printf (Description);
>   
>   #define ACPI_OPTION(Name, Description) \
> -    AcpiOsPrintf ("  %-20s%s\n", Name, Description);
> +    printf ("  %-20s%s\n", Name, Description);
>   
>   
>   /* Check for unexpected exceptions */
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index 96da50c..23cf1c2 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -218,6 +218,10 @@
>   
>   #define ACPI_ADDRESS_RANGE_MAX          2
>   
> +/* Maximum number of While() loops before abort */
> +
> +#define ACPI_MAX_LOOP_COUNT             0xFFFF
> +
>   
>   /******************************************************************************
>    *
> diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
> index ba8f274..640ecf5 100644
> --- a/src/acpica/source/include/acdisasm.h
> +++ b/src/acpica/source/include/acdisasm.h
> @@ -181,6 +181,7 @@ typedef enum
>       ACPI_DMT_UINT64,
>       ACPI_DMT_BUF7,
>       ACPI_DMT_BUF10,
> +    ACPI_DMT_BUF12,
>       ACPI_DMT_BUF16,
>       ACPI_DMT_BUF128,
>       ACPI_DMT_SIG,
> @@ -351,8 +352,8 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
> -extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
> +extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt4[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt6[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
> @@ -458,6 +459,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcctHdr[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct1[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct2[];
> +extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRasf[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
> @@ -495,6 +497,9 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoXenv[];
>   
>   extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
>   
> +extern ACPI_DMTABLE_INFO        *FadtRevisionInfo [ACPI_FADT_MAX_VERSION + 1];
> +
> +
>   /*
>    * dmtable and ahtable
>    */
> diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
> index 2376312..001519f 100644
> --- a/src/acpica/source/include/acglobal.h
> +++ b/src/acpica/source/include/acglobal.h
> @@ -464,6 +464,7 @@ ACPI_GLOBAL (const char,                *AcpiGbl_PldShapeList[]);
>   
>   ACPI_INIT_GLOBAL (ACPI_FILE,            AcpiGbl_DebugFile, NULL);
>   ACPI_INIT_GLOBAL (ACPI_FILE,            AcpiGbl_OutputFile, NULL);
> +ACPI_INIT_GLOBAL (BOOLEAN,              AcpiGbl_DebugTimeout, FALSE);
>   
>   /* Print buffer */
>   
> diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
> index 550e264..60d61f1 100644
> --- a/src/acpica/source/include/acpiosxf.h
> +++ b/src/acpica/source/include/acpiosxf.h
> @@ -564,6 +564,15 @@ AcpiOsGetLine (
>       UINT32                  *BytesRead);
>   #endif
>   
> +#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTracePoint
> +void
> +AcpiOsTracePoint (
> +    ACPI_TRACE_EVENT_TYPE   Type,
> +    BOOLEAN                 Begin,
> +    UINT8                   *Aml,
> +    char                    *Pathname);
> +#endif
> +
>   
>   /*
>    * Obtain ACPI table(s)
> @@ -624,62 +633,4 @@ AcpiOsCloseDirectory (
>   #endif
>   
>   
> -/*
> - * File I/O and related support
> - */
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenFile
> -ACPI_FILE
> -AcpiOsOpenFile (
> -    const char              *Path,
> -    UINT8                   Modes);
> -#endif
> -
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseFile
> -void
> -AcpiOsCloseFile (
> -    ACPI_FILE               File);
> -#endif
> -
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadFile
> -int
> -AcpiOsReadFile (
> -    ACPI_FILE               File,
> -    void                    *Buffer,
> -    ACPI_SIZE               Size,
> -    ACPI_SIZE               Count);
> -#endif
> -
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWriteFile
> -int
> -AcpiOsWriteFile (
> -    ACPI_FILE               File,
> -    void                    *Buffer,
> -    ACPI_SIZE               Size,
> -    ACPI_SIZE               Count);
> -#endif
> -
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetFileOffset
> -long
> -AcpiOsGetFileOffset (
> -    ACPI_FILE               File);
> -#endif
> -
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSetFileOffset
> -ACPI_STATUS
> -AcpiOsSetFileOffset (
> -    ACPI_FILE               File,
> -    long                    Offset,
> -    UINT8                   From);
> -#endif
> -
> -#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTracePoint
> -void
> -AcpiOsTracePoint (
> -    ACPI_TRACE_EVENT_TYPE   Type,
> -    BOOLEAN                 Begin,
> -    UINT8                   *Aml,
> -    char                    *Pathname);
> -#endif
> -
> -
>   #endif /* __ACPIOSXF_H__ */
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 2f939b1..68faadc 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -118,7 +118,7 @@
>   
>   /* Current ACPICA subsystem version in YYYYMMDD format */
>   
> -#define ACPI_CA_VERSION                 0x20160527
> +#define ACPI_CA_VERSION                 0x20160729
>   
>   #include "acconfig.h"
>   #include "actypes.h"
> @@ -492,29 +492,29 @@ ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
>    * Initialization
>    */
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInitializeTables (
>       ACPI_TABLE_DESC         *InitialStorage,
>       UINT32                  InitialTableCount,
>       BOOLEAN                 AllowResize))
>   
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInitializeSubsystem (
>       void))
>   
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiEnableSubsystem (
>       UINT32                  Flags))
>   
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInitializeObjects (
>       UINT32                  Flags))
>   
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiTerminate (
>       void))
>   
> @@ -592,7 +592,7 @@ AcpiDecodePldBuffer (
>    * ACPI table load/unload interfaces
>    */
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiInstallTable (
>       ACPI_PHYSICAL_ADDRESS   Address,
>       BOOLEAN                 Physical))
> @@ -608,7 +608,7 @@ AcpiUnloadParentTable (
>       ACPI_HANDLE             Object))
>   
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiLoadTables (
>       void))
>   
> @@ -617,12 +617,12 @@ AcpiLoadTables (
>    * ACPI table manipulation interfaces
>    */
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiReallocateRootTable (
>       void))
>   
>   ACPI_EXTERNAL_RETURN_STATUS (
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiFindRootPointer (
>       ACPI_PHYSICAL_ADDRESS   *RsdpAddress))
>   
> @@ -1304,13 +1304,6 @@ AcpiTracePoint (
>       UINT8                   *Aml,
>       char                    *Pathname))
>   
> -ACPI_APP_DEPENDENT_RETURN_VOID (
> -ACPI_PRINTF_LIKE(1)
> -void ACPI_INTERNAL_VAR_XFACE
> -AcpiLogError (
> -    const char              *Format,
> -    ...))
> -
>   ACPI_STATUS
>   AcpiInitializeDebugger (
>       void);
> diff --git a/src/acpica/source/include/actables.h b/src/acpica/source/include/actables.h
> index 204af43..31a4b7d 100644
> --- a/src/acpica/source/include/actables.h
> +++ b/src/acpica/source/include/actables.h
> @@ -314,7 +314,7 @@ AcpiTbInstallFixedTable (
>       char                    *Signature,
>       UINT32                  *TableIndex);
>   
> -ACPI_STATUS
> +ACPI_STATUS ACPI_INIT_FUNCTION
>   AcpiTbParseRootTable (
>       ACPI_PHYSICAL_ADDRESS   RsdpAddress);
>   
> diff --git a/src/acpica/source/include/actbl.h b/src/acpica/source/include/actbl.h
> index 65261e1..3c73998 100644
> --- a/src/acpica/source/include/actbl.h
> +++ b/src/acpica/source/include/actbl.h
> @@ -328,62 +328,72 @@ typedef struct acpi_table_facs
>   
>   typedef struct acpi_table_fadt
>   {
> -    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
> -    UINT32                  Facs;               /* 32-bit physical address of FACS */
> -    UINT32                  Dsdt;               /* 32-bit physical address of DSDT */
> -    UINT8                   Model;              /* System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */
> -    UINT8                   PreferredProfile;   /* Conveys preferred power management profile to OSPM. */
> -    UINT16                  SciInterrupt;       /* System vector of SCI interrupt */
> -    UINT32                  SmiCommand;         /* 32-bit Port address of SMI command port */
> -    UINT8                   AcpiEnable;         /* Value to write to SMI_CMD to enable ACPI */
> -    UINT8                   AcpiDisable;        /* Value to write to SMI_CMD to disable ACPI */
> -    UINT8                   S4BiosRequest;      /* Value to write to SMI_CMD to enter S4BIOS state */
> -    UINT8                   PstateControl;      /* Processor performance state control*/
> -    UINT32                  Pm1aEventBlock;     /* 32-bit port address of Power Mgt 1a Event Reg Blk */
> -    UINT32                  Pm1bEventBlock;     /* 32-bit port address of Power Mgt 1b Event Reg Blk */
> -    UINT32                  Pm1aControlBlock;   /* 32-bit port address of Power Mgt 1a Control Reg Blk */
> -    UINT32                  Pm1bControlBlock;   /* 32-bit port address of Power Mgt 1b Control Reg Blk */
> -    UINT32                  Pm2ControlBlock;    /* 32-bit port address of Power Mgt 2 Control Reg Blk */
> -    UINT32                  PmTimerBlock;       /* 32-bit port address of Power Mgt Timer Ctrl Reg Blk */
> -    UINT32                  Gpe0Block;          /* 32-bit port address of General Purpose Event 0 Reg Blk */
> -    UINT32                  Gpe1Block;          /* 32-bit port address of General Purpose Event 1 Reg Blk */
> -    UINT8                   Pm1EventLength;     /* Byte Length of ports at Pm1xEventBlock */
> -    UINT8                   Pm1ControlLength;   /* Byte Length of ports at Pm1xControlBlock */
> -    UINT8                   Pm2ControlLength;   /* Byte Length of ports at Pm2ControlBlock */
> -    UINT8                   PmTimerLength;      /* Byte Length of ports at PmTimerBlock */
> -    UINT8                   Gpe0BlockLength;    /* Byte Length of ports at Gpe0Block */
> -    UINT8                   Gpe1BlockLength;    /* Byte Length of ports at Gpe1Block */
> -    UINT8                   Gpe1Base;           /* Offset in GPE number space where GPE1 events start */
> -    UINT8                   CstControl;         /* Support for the _CST object and C-States change notification */
> -    UINT16                  C2Latency;          /* Worst case HW latency to enter/exit C2 state */
> -    UINT16                  C3Latency;          /* Worst case HW latency to enter/exit C3 state */
> -    UINT16                  FlushSize;          /* Processor memory cache line width, in bytes */
> -    UINT16                  FlushStride;        /* Number of flush strides that need to be read */
> -    UINT8                   DutyOffset;         /* Processor duty cycle index in processor P_CNT reg */
> -    UINT8                   DutyWidth;          /* Processor duty cycle value bit width in P_CNT register */
> -    UINT8                   DayAlarm;           /* Index to day-of-month alarm in RTC CMOS RAM */
> -    UINT8                   MonthAlarm;         /* Index to month-of-year alarm in RTC CMOS RAM */
> -    UINT8                   Century;            /* Index to century in RTC CMOS RAM */
> -    UINT16                  BootFlags;          /* IA-PC Boot Architecture Flags (see below for individual flags) */
> -    UINT8                   Reserved;           /* Reserved, must be zero */
> -    UINT32                  Flags;              /* Miscellaneous flag bits (see below for individual flags) */
> -    ACPI_GENERIC_ADDRESS    ResetRegister;      /* 64-bit address of the Reset register */
> -    UINT8                   ResetValue;         /* Value to write to the ResetRegister port to reset the system */
> -    UINT16                  ArmBootFlags;       /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */
> -    UINT8                   MinorRevision;      /* FADT Minor Revision (ACPI 5.1) */
> -    UINT64                  XFacs;              /* 64-bit physical address of FACS */
> -    UINT64                  XDsdt;              /* 64-bit physical address of DSDT */
> -    ACPI_GENERIC_ADDRESS    XPm1aEventBlock;    /* 64-bit Extended Power Mgt 1a Event Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XPm1bEventBlock;    /* 64-bit Extended Power Mgt 1b Event Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XPm1aControlBlock;  /* 64-bit Extended Power Mgt 1a Control Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XPm1bControlBlock;  /* 64-bit Extended Power Mgt 1b Control Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XPm2ControlBlock;   /* 64-bit Extended Power Mgt 2 Control Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XPmTimerBlock;      /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XGpe0Block;         /* 64-bit Extended General Purpose Event 0 Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    XGpe1Block;         /* 64-bit Extended General Purpose Event 1 Reg Blk address */
> -    ACPI_GENERIC_ADDRESS    SleepControl;       /* 64-bit Sleep Control register (ACPI 5.0) */
> -    ACPI_GENERIC_ADDRESS    SleepStatus;        /* 64-bit Sleep Status register (ACPI 5.0) */
> -    UINT64                  HypervisorId;       /* Hypervisor Vendor ID (ACPI 6.0) */
> +    ACPI_TABLE_HEADER       Header;             /* [V1] Common ACPI table header */
> +    UINT32                  Facs;               /* [V1] 32-bit physical address of FACS */
> +    UINT32                  Dsdt;               /* [V1] 32-bit physical address of DSDT */
> +    UINT8                   Model;              /* [V1] System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */
> +    UINT8                   PreferredProfile;   /* [V1] Conveys preferred power management profile to OSPM. */
> +    UINT16                  SciInterrupt;       /* [V1] System vector of SCI interrupt */
> +    UINT32                  SmiCommand;         /* [V1] 32-bit Port address of SMI command port */
> +    UINT8                   AcpiEnable;         /* [V1] Value to write to SMI_CMD to enable ACPI */
> +    UINT8                   AcpiDisable;        /* [V1] Value to write to SMI_CMD to disable ACPI */
> +    UINT8                   S4BiosRequest;      /* [V1] Value to write to SMI_CMD to enter S4BIOS state */
> +    UINT8                   PstateControl;      /* [V1] Processor performance state control*/
> +    UINT32                  Pm1aEventBlock;     /* [V1] 32-bit port address of Power Mgt 1a Event Reg Blk */
> +    UINT32                  Pm1bEventBlock;     /* [V1] 32-bit port address of Power Mgt 1b Event Reg Blk */
> +    UINT32                  Pm1aControlBlock;   /* [V1] 32-bit port address of Power Mgt 1a Control Reg Blk */
> +    UINT32                  Pm1bControlBlock;   /* [V1] 32-bit port address of Power Mgt 1b Control Reg Blk */
> +    UINT32                  Pm2ControlBlock;    /* [V1] 32-bit port address of Power Mgt 2 Control Reg Blk */
> +    UINT32                  PmTimerBlock;       /* [V1] 32-bit port address of Power Mgt Timer Ctrl Reg Blk */
> +    UINT32                  Gpe0Block;          /* [V1] 32-bit port address of General Purpose Event 0 Reg Blk */
> +    UINT32                  Gpe1Block;          /* [V1] 32-bit port address of General Purpose Event 1 Reg Blk */
> +    UINT8                   Pm1EventLength;     /* [V1] Byte Length of ports at Pm1xEventBlock */
> +    UINT8                   Pm1ControlLength;   /* [V1] Byte Length of ports at Pm1xControlBlock */
> +    UINT8                   Pm2ControlLength;   /* [V1] Byte Length of ports at Pm2ControlBlock */
> +    UINT8                   PmTimerLength;      /* [V1] Byte Length of ports at PmTimerBlock */
> +    UINT8                   Gpe0BlockLength;    /* [V1] Byte Length of ports at Gpe0Block */
> +    UINT8                   Gpe1BlockLength;    /* [V1] Byte Length of ports at Gpe1Block */
> +    UINT8                   Gpe1Base;           /* [V1] Offset in GPE number space where GPE1 events start */
> +    UINT8                   CstControl;         /* [V1] Support for the _CST object and C-States change notification */
> +    UINT16                  C2Latency;          /* [V1] Worst case HW latency to enter/exit C2 state */
> +    UINT16                  C3Latency;          /* [V1] Worst case HW latency to enter/exit C3 state */
> +    UINT16                  FlushSize;          /* [V1] Processor memory cache line width, in bytes */
> +    UINT16                  FlushStride;        /* [V1] Number of flush strides that need to be read */
> +    UINT8                   DutyOffset;         /* [V1] Processor duty cycle index in processor P_CNT reg */
> +    UINT8                   DutyWidth;          /* [V1] Processor duty cycle value bit width in P_CNT register */
> +    UINT8                   DayAlarm;           /* [V1] Index to day-of-month alarm in RTC CMOS RAM */
> +    UINT8                   MonthAlarm;         /* [V1] Index to month-of-year alarm in RTC CMOS RAM */
> +    UINT8                   Century;            /* [V1] Index to century in RTC CMOS RAM */
> +    UINT16                  BootFlags;          /* [V3] IA-PC Boot Architecture Flags (see below for individual flags) */
> +    UINT8                   Reserved;           /* [V1] Reserved, must be zero */
> +    UINT32                  Flags;              /* [V1] Miscellaneous flag bits (see below for individual flags) */
> +    /* End of Version 1 FADT fields (ACPI 1.0) */
> +
> +    ACPI_GENERIC_ADDRESS    ResetRegister;      /* [V3] 64-bit address of the Reset register */
> +    UINT8                   ResetValue;         /* [V3] Value to write to the ResetRegister port to reset the system */
> +    UINT16                  ArmBootFlags;       /* [V5] ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */
> +    UINT8                   MinorRevision;      /* [V5] FADT Minor Revision (ACPI 5.1) */
> +    UINT64                  XFacs;              /* [V3] 64-bit physical address of FACS */
> +    UINT64                  XDsdt;              /* [V3] 64-bit physical address of DSDT */
> +    ACPI_GENERIC_ADDRESS    XPm1aEventBlock;    /* [V3] 64-bit Extended Power Mgt 1a Event Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XPm1bEventBlock;    /* [V3] 64-bit Extended Power Mgt 1b Event Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XPm1aControlBlock;  /* [V3] 64-bit Extended Power Mgt 1a Control Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XPm1bControlBlock;  /* [V3] 64-bit Extended Power Mgt 1b Control Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XPm2ControlBlock;   /* [V3] 64-bit Extended Power Mgt 2 Control Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XPmTimerBlock;      /* [V3] 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XGpe0Block;         /* [V3] 64-bit Extended General Purpose Event 0 Reg Blk address */
> +    ACPI_GENERIC_ADDRESS    XGpe1Block;         /* [V3] 64-bit Extended General Purpose Event 1 Reg Blk address */
> +    /* End of Version 3 FADT fields (ACPI 2.0) */
> +
> +    ACPI_GENERIC_ADDRESS    SleepControl;       /* [V4] 64-bit Sleep Control register (ACPI 5.0) */
> +    /* End of Version 4 FADT fields (ACPI 3.0 and ACPI 4.0) (Field was originally reserved in ACPI 3.0) */
> +
> +    ACPI_GENERIC_ADDRESS    SleepStatus;        /* [V5] 64-bit Sleep Status register (ACPI 5.0) */
> +    /* End of Version 5 FADT fields (ACPI 5.0) */
> +
> +    UINT64                  HypervisorId;       /* [V6] Hypervisor Vendor ID (ACPI 6.0) */
> +    /* End of Version 6 FADT fields (ACPI 6.0) */
> +
>   
>   } ACPI_TABLE_FADT;
>   
> @@ -399,8 +409,8 @@ typedef struct acpi_table_fadt
>   
>   /* Masks for FADT ARM Boot Architecture Flags (arm_boot_flags) ACPI 5.1 */
>   
> -#define ACPI_FADT_PSCI_COMPLIANT    (1)         /* 00: [V5+] PSCI 0.2+ is implemented */
> -#define ACPI_FADT_PSCI_USE_HVC      (1<<1)      /* 01: [V5+] HVC must be used instead of SMC as the PSCI conduit */
> +#define ACPI_FADT_PSCI_COMPLIANT    (1)         /* 00: [V5] PSCI 0.2+ is implemented */
> +#define ACPI_FADT_PSCI_USE_HVC      (1<<1)      /* 01: [V5] HVC must be used instead of SMC as the PSCI conduit */
>   
>   /* Masks for FADT flags */
>   
> @@ -507,20 +517,34 @@ typedef struct acpi_table_desc
>    * match the expected length. In other words, the length of the
>    * FADT is the bottom line as to what the version really is.
>    *
> - * For reference, the values below are as follows:
> - *     FADT V1 size: 0x074
> - *     FADT V2 size: 0x084
> - *     FADT V3 size: 0x0F4
> - *     FADT V4 size: 0x0F4
> - *     FADT V5 size: 0x10C
> - *     FADT V6 size: 0x114
> + * NOTE: There is no officialy released V2 of the FADT. This
> + * version was used only for prototyping and testing during the
> + * 32-bit to 64-bit transition. V3 was the first official 64-bit
> + * version of the FADT.
> + *
> + * Update this list of defines when a new version of the FADT is
> + * added to the ACPI specification. Note that the FADT version is
> + * only incremented when new fields are appended to the existing
> + * version. Therefore, the FADT version is competely independent
> + * from the version of the ACPI specification where it is
> + * defined.
> + *
> + * For reference, the various FADT lengths are as follows:
> + *     FADT V1 size: 0x074      ACPI 1.0
> + *     FADT V3 size: 0x0F4      ACPI 2.0
> + *     FADT V4 size: 0x100      ACPI 3.0 and ACPI 4.0
> + *     FADT V5 size: 0x10C      ACPI 5.0
> + *     FADT V6 size: 0x114      ACPI 6.0
>    */
> -#define ACPI_FADT_V1_SIZE       (UINT32) (ACPI_FADT_OFFSET (Flags) + 4)
> -#define ACPI_FADT_V2_SIZE       (UINT32) (ACPI_FADT_OFFSET (MinorRevision) + 1)
> -#define ACPI_FADT_V3_SIZE       (UINT32) (ACPI_FADT_OFFSET (SleepControl))
> -#define ACPI_FADT_V5_SIZE       (UINT32) (ACPI_FADT_OFFSET (HypervisorId))
> -#define ACPI_FADT_V6_SIZE       (UINT32) (sizeof (ACPI_TABLE_FADT))
> +#define ACPI_FADT_V1_SIZE       (UINT32) (ACPI_FADT_OFFSET (Flags) + 4)         /* ACPI 1.0 */
> +#define ACPI_FADT_V3_SIZE       (UINT32) (ACPI_FADT_OFFSET (SleepControl))      /* ACPI 2.0 */
> +#define ACPI_FADT_V4_SIZE       (UINT32) (ACPI_FADT_OFFSET (SleepStatus))       /* ACPI 3.0 and ACPI 4.0 */
> +#define ACPI_FADT_V5_SIZE       (UINT32) (ACPI_FADT_OFFSET (HypervisorId))      /* ACPI 5.0 */
> +#define ACPI_FADT_V6_SIZE       (UINT32) (sizeof (ACPI_TABLE_FADT))             /* ACPI 6.0 */
> +
> +/* Update these when new FADT versions are added */
>   
> +#define ACPI_FADT_MAX_VERSION   6
>   #define ACPI_FADT_CONFORMANCE   "ACPI 6.1 (FADT version 6)"
>   
>   #endif /* __ACTBL_H__ */
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index 039d71a..abc4f7b 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -1459,16 +1459,6 @@ typedef enum
>   #define ACPI_OSI_WIN_10                 0x0D
>   
>   
> -/* Definitions of file IO */
> -
> -#define ACPI_FILE_READING               0x01
> -#define ACPI_FILE_WRITING               0x02
> -#define ACPI_FILE_BINARY                0x04
> -
> -#define ACPI_FILE_BEGIN                 0x01
> -#define ACPI_FILE_END                   0x02
> -
> -
>   /* Definitions of getopt */
>   
>   #define ACPI_OPT_END                    -1
> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
> index 3fdca45..358d1c8 100644
> --- a/src/acpica/source/include/acutils.h
> +++ b/src/acpica/source/include/acutils.h
> @@ -1140,48 +1140,6 @@ AcpiAhMatchUuid (
>   
>   
>   /*
> - * utprint - printf/vprintf output functions
> - */
> -const char *
> -AcpiUtScanNumber (
> -    const char              *String,
> -    UINT64                  *NumberPtr);
> -
> -const char *
> -AcpiUtPrintNumber (
> -    char                    *String,
> -    UINT64                  Number);
> -
> -int
> -AcpiUtVsnprintf (
> -    char                    *String,
> -    ACPI_SIZE               Size,
> -    const char              *Format,
> -    va_list                 Args);
> -
> -int
> -AcpiUtSnprintf (
> -    char                    *String,
> -    ACPI_SIZE               Size,
> -    const char              *Format,
> -    ...);
> -
> -#ifdef ACPI_APPLICATION
> -int
> -AcpiUtFileVprintf (
> -    ACPI_FILE               File,
> -    const char              *Format,
> -    va_list                 Args);
> -
> -int
> -AcpiUtFilePrintf (
> -    ACPI_FILE               File,
> -    const char              *Format,
> -    ...);
> -#endif
> -
> -
> -/*
>    * utuuid -- UUID support functions
>    */
>   #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
> diff --git a/src/acpica/source/include/platform/acenv.h b/src/acpica/source/include/platform/acenv.h
> index 7a72456..4982c87 100644
> --- a/src/acpica/source/include/platform/acenv.h
> +++ b/src/acpica/source/include/platform/acenv.h
> @@ -151,6 +151,7 @@
>       (defined ACPI_EXAMPLE_APP)
>   #define ACPI_APPLICATION
>   #define ACPI_SINGLE_THREADED
> +#define USE_NATIVE_ALLOCATE_ZEROED
>   #endif
>   
>   /* iASL configuration */
> @@ -197,7 +198,6 @@
>   
>   #ifdef ACPI_DUMP_APP
>   #define ACPI_USE_NATIVE_MEMORY_MAPPING
> -#define USE_NATIVE_ALLOCATE_ZEROED
>   #endif
>   
>   /* AcpiNames/Example configuration. Hardware disabled */
> @@ -222,7 +222,6 @@
>   /* Common for all ACPICA applications */
>   
>   #ifdef ACPI_APPLICATION
> -#define ACPI_USE_SYSTEM_CLIBRARY
>   #define ACPI_USE_LOCAL_CACHE
>   #endif
>   
> @@ -239,10 +238,21 @@
>   /******************************************************************************
>    *
>    * Host configuration files. The compiler configuration files are included
> - * by the host files.
> + * first.
>    *
>    *****************************************************************************/
>   
> +#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
> +#include "acgcc.h"
> +
> +#elif defined(_MSC_VER)
> +#include "acmsvc.h"
> +
> +#elif defined(__INTEL_COMPILER)
> +#include "acintel.h"
> +
> +#endif
> +
>   #if defined(_LINUX) || defined(__linux__)
>   #include "aclinux.h"
>   
> @@ -282,18 +292,20 @@
>   #elif defined(__OS2__)
>   #include "acos2.h"
>   
> -#elif defined(_AED_EFI)
> -#include "acefi.h"
> -
> -#elif defined(_GNU_EFI)
> -#include "acefi.h"
> -
>   #elif defined(__HAIKU__)
>   #include "achaiku.h"
>   
>   #elif defined(__QNX__)
>   #include "acqnx.h"
>   
> +/*
> + * EFI applications can be built with -nostdlib, in this case, it must be
> + * included after including all other host environmental definitions, in
> + * order to override the definitions.
> + */
> +#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
> +#include "acefi.h"
> +
>   #else
>   
>   /* Unknown environment */
> @@ -402,7 +414,8 @@
>    * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
>    *      Otherwise, local versions of string/memory functions will be used.
>    * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
> - *      the standard header files may be used.
> + *      the standard header files may be used. Defining this implies that
> + *      ACPI_USE_SYSTEM_CLIBRARY has been defined.
>    *
>    * The ACPICA subsystem only uses low level C library functions that do not
>    * call operating system services and may therefore be inlined in the code.
> @@ -410,7 +423,6 @@
>    * It may be necessary to tailor these include files to the target
>    * generation environment.
>    */
> -#ifdef ACPI_USE_SYSTEM_CLIBRARY
>   
>   /* Use the standard C library headers. We want to keep these to a minimum. */
>   
> @@ -418,57 +430,20 @@
>   
>   /* Use the standard headers from the standard locations */
>   
> -#include <stdarg.h>
>   #include <stdlib.h>
>   #include <string.h>
>   #include <ctype.h>
> +#ifdef ACPI_APPLICATION
> +#include <stdio.h>
> +#include <fcntl.h>
> +#include <errno.h>
> +#include <time.h>
> +#include <signal.h>
> +#endif
>   
>   #endif /* ACPI_USE_STANDARD_HEADERS */
>   
> -/* We will be linking to the standard Clib functions */
> -
> -#else
> -
> -/******************************************************************************
> - *
> - * Not using native C library, use local implementations
> - *
> - *****************************************************************************/
> -
> -/*
> - * Use local definitions of C library macros and functions. These function
> - * implementations may not be as efficient as an inline or assembly code
> - * implementation provided by a native C library, but they are functionally
> - * equivalent.
> - */
> -#ifndef va_arg
> -
> -#ifndef _VALIST
> -#define _VALIST
> -typedef char *va_list;
> -#endif /* _VALIST */
> -
> -/* Storage alignment properties */
> -
> -#define  _AUPBND                (sizeof (ACPI_NATIVE_INT) - 1)
> -#define  _ADNBND                (sizeof (ACPI_NATIVE_INT) - 1)
> -
> -/* Variable argument list macro definitions */
> -
> -#define _Bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
> -#define va_arg(ap, T)           (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND))))
> -#define va_end(ap)              (ap = (va_list) NULL)
> -#define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND))))
> -
> -#endif /* va_arg */
> -
> -/* Use the local (ACPICA) definitions of the clib functions */
> -
> -#endif /* ACPI_USE_SYSTEM_CLIBRARY */
> -
> -#ifndef ACPI_FILE
>   #ifdef ACPI_APPLICATION
> -#include <stdio.h>
>   #define ACPI_FILE              FILE *
>   #define ACPI_FILE_OUT          stdout
>   #define ACPI_FILE_ERR          stderr
> @@ -477,6 +452,9 @@ typedef char *va_list;
>   #define ACPI_FILE_OUT          NULL
>   #define ACPI_FILE_ERR          NULL
>   #endif /* ACPI_APPLICATION */
> -#endif /* ACPI_FILE */
> +
> +#ifndef ACPI_INIT_FUNCTION
> +#define ACPI_INIT_FUNCTION
> +#endif
>   
>   #endif /* __ACENV_H__ */
> diff --git a/src/acpica/source/include/platform/acenvex.h b/src/acpica/source/include/platform/acenvex.h
> index a0a4ed1..94b53e7 100644
> --- a/src/acpica/source/include/platform/acenvex.h
> +++ b/src/acpica/source/include/platform/acenvex.h
> @@ -128,17 +128,24 @@
>   #if defined(_LINUX) || defined(__linux__)
>   #include "aclinuxex.h"
>   
> -#elif defined(WIN32)
> -#include "acwinex.h"
> +#elif defined(__DragonFly__)
> +#include "acdragonflyex.h"
>   
> -#elif defined(_AED_EFI)
> +/*
> + * EFI applications can be built with -nostdlib, in this case, it must be
> + * included after including all other host environmental definitions, in
> + * order to override the definitions.
> + */
> +#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
>   #include "acefiex.h"
>   
> -#elif defined(_GNU_EFI)
> -#include "acefiex.h"
> +#endif
>   
> -#elif defined(__DragonFly__)
> -#include "acdragonflyex.h"
> +#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
> +#include "acgccex.h"
> +
> +#elif defined(_MSC_VER)
> +#include "acmsvcex.h"
>   
>   #endif
>   
> diff --git a/src/acpica/source/include/platform/acgcc.h b/src/acpica/source/include/platform/acgcc.h
> index 3d36a38..097539c 100644
> --- a/src/acpica/source/include/platform/acgcc.h
> +++ b/src/acpica/source/include/platform/acgcc.h
> @@ -116,6 +116,12 @@
>   #ifndef __ACGCC_H__
>   #define __ACGCC_H__
>   
> +/*
> + * Use compiler specific <stdarg.h> is a good practice for even when
> + * -nostdinc is specified (i.e., ACPI_USE_STANDARD_HEADERS undefined.
> + */
> +#include <stdarg.h>
> +
>   #define ACPI_INLINE             __inline__
>   
>   /* Function name is used for debug output. Non-ANSI, compiler-dependent */
> @@ -136,17 +142,6 @@
>    */
>   #define ACPI_UNUSED_VAR __attribute__ ((unused))
>   
> -/*
> - * Some versions of gcc implement strchr() with a buggy macro. So,
> - * undef it here. Prevents error messages of this form (usually from the
> - * file getopt.c):
> - *
> - * error: logical '&&' with non-zero constant will always evaluate as true
> - */
> -#ifdef strchr
> -#undef strchr
> -#endif
> -
>   /* GCC supports __VA_ARGS__ in macros */
>   
>   #define COMPILER_VA_MACRO               1
> diff --git a/src/acpica/source/include/platform/acgccex.h b/src/acpica/source/include/platform/acgccex.h
> new file mode 100644
> index 0000000..8aed194
> --- /dev/null
> +++ b/src/acpica/source/include/platform/acgccex.h
> @@ -0,0 +1,130 @@
> +/******************************************************************************
> + *
> + * Name: acgccex.h - Extra GCC specific defines, etc.
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 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.
> + *
> + *****************************************************************************/
> +
> +#ifndef __ACGCCEX_H__
> +#define __ACGCCEX_H__
> +
> +/*
> + * Some versions of gcc implement strchr() with a buggy macro. So,
> + * undef it here. Prevents error messages of this form (usually from the
> + * file getopt.c):
> + *
> + * error: logical '&&' with non-zero constant will always evaluate as true
> + */
> +#ifdef strchr
> +#undef strchr
> +#endif
> +
> +#endif /* __ACGCCEX_H__ */
> diff --git a/src/acpica/source/include/platform/aclinux.h b/src/acpica/source/include/platform/aclinux.h
> index 9127735..6f7c577 100644
> --- a/src/acpica/source/include/platform/aclinux.h
> +++ b/src/acpica/source/include/platform/aclinux.h
> @@ -161,6 +161,8 @@
>   #include <asm/acenv.h>
>   #endif
>   
> +#define ACPI_INIT_FUNCTION __init
> +
>   #ifndef CONFIG_ACPI
>   
>   /* External globals for __KERNEL__, stubs is needed */
> @@ -245,11 +247,11 @@
>   
>   #else /* !__KERNEL__ */
>   
> -#include <stdarg.h>
> -#include <string.h>
> -#include <stdlib.h>
> -#include <ctype.h>
> +#define ACPI_USE_STANDARD_HEADERS
> +
> +#ifdef ACPI_USE_STANDARD_HEADERS
>   #include <unistd.h>
> +#endif
>   
>   /* Define/disable kernel-specific declarators */
>   
> @@ -280,8 +282,4 @@
>   
>   #endif /* __KERNEL__ */
>   
> -/* Linux uses GCC */
> -
> -#include "acgcc.h"
> -
>   #endif /* __ACLINUX_H__ */
> diff --git a/src/acpica/source/include/platform/aclinuxex.h b/src/acpica/source/include/platform/aclinuxex.h
> index fb259b0..7f24989 100644
> --- a/src/acpica/source/include/platform/aclinuxex.h
> +++ b/src/acpica/source/include/platform/aclinuxex.h
> @@ -143,7 +143,7 @@
>   /*
>    * Overrides for in-kernel ACPICA
>    */
> -ACPI_STATUS __init AcpiOsInitialize (
> +ACPI_STATUS ACPI_INIT_FUNCTION AcpiOsInitialize (
>       void);
>   
>   ACPI_STATUS AcpiOsTerminate (
> diff --git a/src/acpica/source/os_specific/service_layers/oslibcfs.c b/src/acpica/source/os_specific/service_layers/oslibcfs.c
> deleted file mode 100644
> index 26c1a8f..0000000
> --- a/src/acpica/source/os_specific/service_layers/oslibcfs.c
> +++ /dev/null
> @@ -1,330 +0,0 @@
> -/******************************************************************************
> - *
> - * Module Name: oslibcfs - C library OSL for file I/O
> - *
> - *****************************************************************************/
> -
> -/******************************************************************************
> - *
> - * 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 "acpi.h"
> -#include <stdio.h>
> -#include <stdarg.h>
> -
> -#define _COMPONENT          ACPI_OS_SERVICES
> -        ACPI_MODULE_NAME    ("oslibcfs")
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiOsOpenFile
> - *
> - * PARAMETERS:  Path                - File path
> - *              Modes               - File operation type
> - *
> - * RETURN:      File descriptor.
> - *
> - * DESCRIPTION: Open a file for reading (ACPI_FILE_READING) or/and writing
> - *              (ACPI_FILE_WRITING).
> - *
> - ******************************************************************************/
> -
> -ACPI_FILE
> -AcpiOsOpenFile (
> -    const char              *Path,
> -    UINT8                   Modes)
> -{
> -    ACPI_FILE               File;
> -    UINT32                  i = 0;
> -    char                    ModesStr[4];
> -
> -
> -    if (Modes & ACPI_FILE_READING)
> -    {
> -        ModesStr[i++] = 'r';
> -    }
> -    if (Modes & ACPI_FILE_WRITING)
> -    {
> -        ModesStr[i++] = 'w';
> -    }
> -
> -    if (Modes & ACPI_FILE_BINARY)
> -    {
> -        ModesStr[i++] = 'b';
> -    }
> -
> -    ModesStr[i++] = '\0';
> -
> -    File = fopen (Path, ModesStr);
> -    if (!File)
> -    {
> -        perror ("Could not open file");
> -    }
> -
> -    return (File);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiOsCloseFile
> - *
> - * PARAMETERS:  File                - An open file descriptor
> - *
> - * RETURN:      None.
> - *
> - * DESCRIPTION: Close a file opened via AcpiOsOpenFile.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiOsCloseFile (
> -    ACPI_FILE               File)
> -{
> -
> -    fclose (File);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiOsReadFile
> - *
> - * PARAMETERS:  File                - An open file descriptor
> - *              Buffer              - Data buffer
> - *              Size                - Data block size
> - *              Count               - Number of data blocks
> - *
> - * RETURN:      Number of bytes actually read.
> - *
> - * DESCRIPTION: Read from a file.
> - *
> - ******************************************************************************/
> -
> -int
> -AcpiOsReadFile (
> -    ACPI_FILE               File,
> -    void                    *Buffer,
> -    ACPI_SIZE               Size,
> -    ACPI_SIZE               Count)
> -{
> -    int                     Length;
> -
> -
> -    Length = fread (Buffer, Size, Count, File);
> -    if (Length < 0)
> -    {
> -        perror ("Error reading file");
> -    }
> -
> -    return (Length);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiOsWriteFile
> - *
> - * PARAMETERS:  File                - An open file descriptor
> - *              Buffer              - Data buffer
> - *              Size                - Data block size
> - *              Count               - Number of data blocks
> - *
> - * RETURN:      Number of bytes actually written.
> - *
> - * DESCRIPTION: Write to a file.
> - *
> - ******************************************************************************/
> -
> -int
> -AcpiOsWriteFile (
> -    ACPI_FILE               File,
> -    void                    *Buffer,
> -    ACPI_SIZE               Size,
> -    ACPI_SIZE               Count)
> -{
> -    int                     Length;
> -
> -
> -    Length = fwrite (Buffer, Size, Count, File);
> -    if (Length < 0)
> -    {
> -        perror ("Error writing file");
> -    }
> -
> -    return (Length);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiOsGetFileOffset
> - *
> - * PARAMETERS:  File                - An open file descriptor
> - *
> - * RETURN:      Current file pointer position.
> - *
> - * DESCRIPTION: Get current file offset.
> - *
> - ******************************************************************************/
> -
> -long
> -AcpiOsGetFileOffset (
> -    ACPI_FILE               File)
> -{
> -    long                    Offset;
> -
> -
> -    Offset = ftell (File);
> -    return (Offset);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiOsSetFileOffset
> - *
> - * PARAMETERS:  File                - An open file descriptor
> - *              Offset              - New file offset
> - *              From                - From begin/end of file
> - *
> - * RETURN:      Status
> - *
> - * DESCRIPTION: Set current file offset.
> - *
> - ******************************************************************************/
> -
> -ACPI_STATUS
> -AcpiOsSetFileOffset (
> -    ACPI_FILE               File,
> -    long                    Offset,
> -    UINT8                   From)
> -{
> -    int                     Ret = 0;
> -
> -
> -    if (From == ACPI_FILE_BEGIN)
> -    {
> -        Ret = fseek (File, Offset, SEEK_SET);
> -    }
> -
> -    if (From == ACPI_FILE_END)
> -    {
> -        Ret = fseek (File, Offset, SEEK_END);
> -    }
> -
> -    if (Ret < 0)
> -    {
> -        return (AE_ERROR);
> -    }
> -    else
> -    {
> -        return (AE_OK);
> -    }
> -}
> diff --git a/src/acpica/source/os_specific/service_layers/osunixxf.c b/src/acpica/source/os_specific/service_layers/osunixxf.c
> index c3a66d7..f04b59e 100644
> --- a/src/acpica/source/os_specific/service_layers/osunixxf.c
> +++ b/src/acpica/source/os_specific/service_layers/osunixxf.c
> @@ -136,9 +136,6 @@
>           ACPI_MODULE_NAME    ("osunixxf")
>   
>   
> -BOOLEAN                        AcpiGbl_DebugTimeout = FALSE;
> -
> -
>   /* Upcalls to AcpiExec */
>   
>   void
> diff --git a/src/acpica/source/tools/acpiexec/aecommon.h b/src/acpica/source/tools/acpiexec/aecommon.h
> index 12199b0..dc15556 100644
> --- a/src/acpica/source/tools/acpiexec/aecommon.h
> +++ b/src/acpica/source/tools/acpiexec/aecommon.h
> @@ -131,11 +131,6 @@
>   #include "amlresrc.h"
>   #include "acapps.h"
>   
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <signal.h>
> -
>   
>   /*
>    * Debug Regions
> diff --git a/src/acpica/source/tools/acpiexec/aeinitfile.c b/src/acpica/source/tools/acpiexec/aeinitfile.c
> index 57c20dc..b1b60cd 100644
> --- a/src/acpica/source/tools/acpiexec/aeinitfile.c
> +++ b/src/acpica/source/tools/acpiexec/aeinitfile.c
> @@ -158,7 +158,8 @@ AeOpenInitializationFile (
>       InitFile = fopen (Filename, "r");
>       if (!InitFile)
>       {
> -        perror ("Could not open initialization file");
> +        fprintf (stderr,
> +            "Could not open initialization file: %s\n", Filename);
>           return (-1);
>       }
>   
Acked-by: Ivan Hu <ivan.hu at canonical.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20160816/0d59287e/attachment-0001.html>


More information about the fwts-devel mailing list