[1/2] ACPICA: Update to version 20190816
diff mbox series

Message ID 20190816174139.14231-2-colin.king@canonical.com
State Accepted
Headers show
Series
  • ACPICA: Update to version 20190816
Related show

Commit Message

Colin King Aug. 16, 2019, 5:41 p.m. UTC
From: Colin Ian King <colin.king@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/2019-August/001949.html

Also changed the fwtsiasl makefile to build new dtcompilerparser

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpica/source/common/adwalk.c             |  21 +-
 src/acpica/source/common/dmrestag.c           |   6 +-
 src/acpica/source/common/dmtables.c           |   4 +-
 src/acpica/source/common/dmtbdump2.c          |   2 +-
 src/acpica/source/compiler/aslcache.c         |   6 +-
 src/acpica/source/compiler/aslcodegen.c       |   4 +-
 src/acpica/source/compiler/aslcompile.c       |  29 +-
 src/acpica/source/compiler/aslcompiler.h      |  18 +-
 src/acpica/source/compiler/asldebug.c         |   2 +-
 src/acpica/source/compiler/asldefine.h        |   2 +-
 src/acpica/source/compiler/aslglobal.h        |   2 +-
 src/acpica/source/compiler/aslhelp.c          |   1 +
 src/acpica/source/compiler/asllength.c        |   9 +-
 src/acpica/source/compiler/asllistsup.c       |   2 +-
 src/acpica/source/compiler/aslload.c          |  11 +-
 src/acpica/source/compiler/aslmain.c          |  30 +-
 src/acpica/source/compiler/aslmessages.c      |   4 +-
 src/acpica/source/compiler/aslmessages.h      |   2 +
 src/acpica/source/compiler/aslnamesp.c        |   9 +-
 src/acpica/source/compiler/asloptions.c       |   5 +
 src/acpica/source/compiler/aslparseop.c       |  18 +-
 src/acpica/source/compiler/aslstartup.c       |   1 +
 src/acpica/source/compiler/asltransform.c     |   6 +
 src/acpica/source/compiler/asltypes.h         |   3 +
 src/acpica/source/compiler/aslutils.c         | 177 ++++++++---
 src/acpica/source/compiler/aslxrefout.c       |   2 +-
 src/acpica/source/compiler/dtcompile.c        |  84 +++--
 src/acpica/source/compiler/dtcompiler.h       |  27 +-
 src/acpica/source/compiler/dtcompilerparser.l | 288 ++++++++++++++++++
 src/acpica/source/compiler/dtcompilerparser.y | 287 +++++++++++++++++
 src/acpica/source/compiler/dtfield.c          |   4 +-
 src/acpica/source/compiler/dtio.c             |  59 +++-
 src/acpica/source/compiler/dtparser.l         |   2 -
 src/acpica/source/compiler/dttemplate.c       |   2 +-
 src/acpica/source/compiler/prmacros.c         |   2 +-
 src/acpica/source/compiler/prscan.c           |   6 +-
 .../source/components/debugger/dbhistry.c     |   2 +-
 .../source/components/debugger/dbinput.c      |  10 +-
 .../source/components/debugger/dbmethod.c     |   5 +
 .../source/components/debugger/dbstats.c      |  92 +++---
 src/acpica/source/components/events/evgpe.c   |   9 +
 src/acpica/source/components/events/evxfgpe.c |  27 ++
 .../source/components/executer/exconfig.c     |   4 +-
 .../source/components/executer/exdump.c       |   6 +-
 .../source/components/namespace/nsaccess.c    |   2 +-
 .../source/components/namespace/nsalloc.c     |   2 +-
 .../source/components/namespace/nsdump.c      |   2 +-
 .../source/components/namespace/nsrepair2.c   |   2 +-
 src/acpica/source/components/tables/tbdata.c  |   1 +
 .../source/components/utilities/utdebug.c     |   4 +-
 .../source/components/utilities/uterror.c     |   6 +-
 .../source/components/utilities/utosi.c       |   3 +-
 .../source/components/utilities/utownerid.c   |  12 +-
 src/acpica/source/include/acconfig.h          |   4 +-
 src/acpica/source/include/aclocal.h           |   4 +-
 src/acpica/source/include/acobject.h          |   2 +-
 src/acpica/source/include/acpiosxf.h          |   1 +
 src/acpica/source/include/acpixf.h            |  14 +-
 src/acpica/source/include/acstruct.h          |   2 +-
 src/acpica/source/include/actypes.h           |  20 +-
 src/acpica/source/include/acutils.h           |   9 +-
 src/libfwtsiasl/Makefile.am                   |  12 +
 62 files changed, 1157 insertions(+), 237 deletions(-)
 create mode 100644 src/acpica/source/compiler/dtcompilerparser.l
 create mode 100644 src/acpica/source/compiler/dtcompilerparser.y

Comments

Alex Hung Aug. 16, 2019, 7:51 p.m. UTC | #1
On 2019-08-16 11:41 a.m., Colin King wrote:
> From: Colin Ian King <colin.king@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/2019-August/001949.html
> 
> Also changed the fwtsiasl makefile to build new dtcompilerparser
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpica/source/common/adwalk.c             |  21 +-
>  src/acpica/source/common/dmrestag.c           |   6 +-
>  src/acpica/source/common/dmtables.c           |   4 +-
>  src/acpica/source/common/dmtbdump2.c          |   2 +-
>  src/acpica/source/compiler/aslcache.c         |   6 +-
>  src/acpica/source/compiler/aslcodegen.c       |   4 +-
>  src/acpica/source/compiler/aslcompile.c       |  29 +-
>  src/acpica/source/compiler/aslcompiler.h      |  18 +-
>  src/acpica/source/compiler/asldebug.c         |   2 +-
>  src/acpica/source/compiler/asldefine.h        |   2 +-
>  src/acpica/source/compiler/aslglobal.h        |   2 +-
>  src/acpica/source/compiler/aslhelp.c          |   1 +
>  src/acpica/source/compiler/asllength.c        |   9 +-
>  src/acpica/source/compiler/asllistsup.c       |   2 +-
>  src/acpica/source/compiler/aslload.c          |  11 +-
>  src/acpica/source/compiler/aslmain.c          |  30 +-
>  src/acpica/source/compiler/aslmessages.c      |   4 +-
>  src/acpica/source/compiler/aslmessages.h      |   2 +
>  src/acpica/source/compiler/aslnamesp.c        |   9 +-
>  src/acpica/source/compiler/asloptions.c       |   5 +
>  src/acpica/source/compiler/aslparseop.c       |  18 +-
>  src/acpica/source/compiler/aslstartup.c       |   1 +
>  src/acpica/source/compiler/asltransform.c     |   6 +
>  src/acpica/source/compiler/asltypes.h         |   3 +
>  src/acpica/source/compiler/aslutils.c         | 177 ++++++++---
>  src/acpica/source/compiler/aslxrefout.c       |   2 +-
>  src/acpica/source/compiler/dtcompile.c        |  84 +++--
>  src/acpica/source/compiler/dtcompiler.h       |  27 +-
>  src/acpica/source/compiler/dtcompilerparser.l | 288 ++++++++++++++++++
>  src/acpica/source/compiler/dtcompilerparser.y | 287 +++++++++++++++++
>  src/acpica/source/compiler/dtfield.c          |   4 +-
>  src/acpica/source/compiler/dtio.c             |  59 +++-
>  src/acpica/source/compiler/dtparser.l         |   2 -
>  src/acpica/source/compiler/dttemplate.c       |   2 +-
>  src/acpica/source/compiler/prmacros.c         |   2 +-
>  src/acpica/source/compiler/prscan.c           |   6 +-
>  .../source/components/debugger/dbhistry.c     |   2 +-
>  .../source/components/debugger/dbinput.c      |  10 +-
>  .../source/components/debugger/dbmethod.c     |   5 +
>  .../source/components/debugger/dbstats.c      |  92 +++---
>  src/acpica/source/components/events/evgpe.c   |   9 +
>  src/acpica/source/components/events/evxfgpe.c |  27 ++
>  .../source/components/executer/exconfig.c     |   4 +-
>  .../source/components/executer/exdump.c       |   6 +-
>  .../source/components/namespace/nsaccess.c    |   2 +-
>  .../source/components/namespace/nsalloc.c     |   2 +-
>  .../source/components/namespace/nsdump.c      |   2 +-
>  .../source/components/namespace/nsrepair2.c   |   2 +-
>  src/acpica/source/components/tables/tbdata.c  |   1 +
>  .../source/components/utilities/utdebug.c     |   4 +-
>  .../source/components/utilities/uterror.c     |   6 +-
>  .../source/components/utilities/utosi.c       |   3 +-
>  .../source/components/utilities/utownerid.c   |  12 +-
>  src/acpica/source/include/acconfig.h          |   4 +-
>  src/acpica/source/include/aclocal.h           |   4 +-
>  src/acpica/source/include/acobject.h          |   2 +-
>  src/acpica/source/include/acpiosxf.h          |   1 +
>  src/acpica/source/include/acpixf.h            |  14 +-
>  src/acpica/source/include/acstruct.h          |   2 +-
>  src/acpica/source/include/actypes.h           |  20 +-
>  src/acpica/source/include/acutils.h           |   9 +-
>  src/libfwtsiasl/Makefile.am                   |  12 +
>  62 files changed, 1157 insertions(+), 237 deletions(-)
>  create mode 100644 src/acpica/source/compiler/dtcompilerparser.l
>  create mode 100644 src/acpica/source/compiler/dtcompilerparser.y
> 
> diff --git a/src/acpica/source/common/adwalk.c b/src/acpica/source/common/adwalk.c
> index d9bd4d9e..6da2e8ec 100644
> --- a/src/acpica/source/common/adwalk.c
> +++ b/src/acpica/source/common/adwalk.c
> @@ -480,6 +480,7 @@ AcpiDmDumpDescending (
>  {
>      ACPI_OP_WALK_INFO       *Info = Context;
>      char                    *Path;
> +    ACPI_STATUS             Status;
>  
>  
>      if (!Op)
> @@ -522,10 +523,18 @@ AcpiDmDumpDescending (
>  
>          if (Op->Common.Value.String)
>          {
> -            AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
> +            Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
>                  NULL, &Path);
> -            AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
> -            ACPI_FREE (Path);
> +            if (ACPI_SUCCESS (Status))
> +            {
> +                AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
> +                ACPI_FREE (Path);
> +            }
> +            else
> +            {
> +                AcpiOsPrintf ("Could not externalize pathname for node [%4.4s]",
> +                    Op->Common.Node->Name.Ascii);
> +            }
>          }
>          else
>          {
> @@ -830,9 +839,9 @@ AcpiDmLoadDescendingOp (
>           * 2) Not the root node
>           * 3) Not a node created by Scope
>           */
> -
> -        if (!PreDefined && Node != AcpiGbl_RootNode &&
> -            Op->Common.AmlOpcode != AML_SCOPE_OP)
> +        if (!PreDefined &&
> +            (Node != AcpiGbl_RootNode) &&
> +            (Op->Common.AmlOpcode != AML_SCOPE_OP))
>          {
>              Node->OwnerId = WalkState->OwnerId;
>          }
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index 8ab92d71..072409f7 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -833,8 +833,12 @@ AcpiGetTagPathname (
>  
>      /* Internalize the namepath to AML format */
>  
> -    AcpiNsInternalizeName (Pathname, &InternalPath);
> +    Status = AcpiNsInternalizeName (Pathname, &InternalPath);
>      ACPI_FREE (Pathname);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return (NULL);
> +    }
>  
>      /* Update the Op with the symbol */
>  
> diff --git a/src/acpica/source/common/dmtables.c b/src/acpica/source/common/dmtables.c
> index f9579509..a2dbea62 100644
> --- a/src/acpica/source/common/dmtables.c
> +++ b/src/acpica/source/common/dmtables.c
> @@ -443,8 +443,8 @@ AdGetLocalTables (
>      /* Get the DSDT via table override */
>  
>      ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
> -    AcpiOsTableOverride (&TableHeader, &NewTable);
> -    if (!NewTable)
> +    Status = AcpiOsTableOverride (&TableHeader, &NewTable);
> +    if (ACPI_FAILURE (Status) || !NewTable)
>      {
>          fprintf (stderr, "Could not obtain DSDT\n");
>          return (AE_NO_ACPI_TABLES);
> diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c
> index a2d09b31..418b6ec0 100644
> --- a/src/acpica/source/common/dmtbdump2.c
> +++ b/src/acpica/source/common/dmtbdump2.c
> @@ -871,7 +871,7 @@ AcpiDmDumpMcfg (
>          if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
>          {
>              AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
> -                sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
> +                (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
>              return;
>          }
>  
> diff --git a/src/acpica/source/compiler/aslcache.c b/src/acpica/source/compiler/aslcache.c
> index f8e7c658..132497b5 100644
> --- a/src/acpica/source/compiler/aslcache.c
> +++ b/src/acpica/source/compiler/aslcache.c
> @@ -421,7 +421,7 @@ UtDeleteLocalCaches (
>      DbgPrint (ASL_DEBUG_OUTPUT,
>          "%u ParseOps, Buffer size: %u ops (%u bytes), %u Buffers\n",
>          AslGbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE,
> -        (sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
> +        ((UINT32) sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
>  
>      /* Reset cache globals */
>  
> @@ -445,7 +445,7 @@ UtDeleteLocalCaches (
>      DbgPrint (ASL_DEBUG_OUTPUT,
>          "%u Fields, Buffer size: %u fields (%u bytes), %u Buffers\n",
>          AslGbl_FieldCount, ASL_FIELD_CACHE_SIZE,
> -        (sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
> +        ((UINT32) sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
>  
>      /* Reset cache globals */
>  
> @@ -468,7 +468,7 @@ UtDeleteLocalCaches (
>      DbgPrint (ASL_DEBUG_OUTPUT,
>          "%u Subtables, Buffer size: %u subtables (%u bytes), %u Buffers\n",
>          AslGbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE,
> -        (sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
> +        ((UINT32) sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
>  
>      /* Reset cache globals */
>  
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 54b5ac2c..86f85074 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -618,8 +618,8 @@ CgWriteTableHeader (
>          Op->Asl.AmlSubtreeLength +=
>              strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3;
>  
> -        CvDbgPrint ("     Length: %lu\n",
> -            strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
> +        CvDbgPrint ("     Length: %u\n",
> +            (UINT32) strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
>  
>          if (Op->Asl.CommentList)
>          {
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5f152dc9..9214cfdf 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -853,10 +853,11 @@ CmDumpAllEvents (
>   *
>   ******************************************************************************/
>  
> -void
> +int
>  CmCleanupAndExit (
>      void)
>  {
> +    int                     Status = 0;
>      BOOLEAN                 DeleteAmlFile = FALSE;
>      ASL_GLOBAL_FILE_NODE    *CurrentFileNode = AslGbl_FilesList;
>  
> @@ -915,20 +916,38 @@ CmCleanupAndExit (
>      UtDisplaySummary (ASL_FILE_STDOUT);
>  
>      /*
> -     * We will delete the AML file if there are errors and the
> -     * force AML output option has not been used.
> +     * Delete the AML file if there are errors and the force AML output option
> +     * (-f) has not been used.
> +     *
> +     * Return -1 as a status of the compiler if no AML files are generated. If
> +     * the AML file is generated in the presence of errors, return 0. In the
> +     * latter case, the errors were ignored by the user so the compilation is
> +     * considered successful.
>       */
> -    if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly || ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
> +    if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly ||
> +        ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
>          (!AslGbl_IgnoreErrors) &&
>          AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle))
>      {
>          DeleteAmlFile = TRUE;
> +        Status = -1;
>      }
>  
>      /* Close all open files */
>  
>      while (CurrentFileNode)
>      {
> +        /*
> +         * Set the program return status based on file errors. If there are any
> +         * errors and during compilation, the command is not considered
> +         * successful.
> +         */
> +        if (Status != -1 && !AslGbl_IgnoreErrors &&
> +            CurrentFileNode->ParserErrorDetected)
> +        {
> +            Status = -1;
> +        }
> +
>          switch  (FlSwitchFileSet (CurrentFileNode->Files[ASL_FILE_INPUT].Filename))
>          {
>              case SWITCH_TO_SAME_FILE:
> @@ -952,6 +971,8 @@ CmCleanupAndExit (
>      {
>          UtDeleteLocalCaches ();
>      }
> +
> +    return (Status);
>  }
>  
>  
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 5c4bdc17..01ab3924 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -266,7 +266,7 @@ void
>  CmDoOutputFiles (
>      void);
>  
> -void
> +int
>  CmCleanupAndExit (
>      void);
>  
> @@ -1052,6 +1052,7 @@ void
>  FlCloseFile (
>      UINT32                  FileId);
>  
> +ACPI_PRINTF_LIKE (2)
>  void
>  FlPrintFile (
>      UINT32                  FileId,
> @@ -1195,6 +1196,7 @@ OtXrefWalkPart1 (
>  /*
>   * aslutils - common compiler utilities
>   */
> +ACPI_PRINTF_LIKE(2)
>  void
>  DbgPrint (
>      UINT32                  Type,
> @@ -1288,6 +1290,10 @@ UtInternalizeName (
>      char                    *ExternalName,
>      char                    **ConvertedName);
>  
> +BOOLEAN
> +UtNameContainsAllPrefix (
> +    ACPI_PARSE_OBJECT       *Op);
> +
>  void
>  UtAttachNamepathToOwner (
>      ACPI_PARSE_OBJECT       *Op,
> @@ -1303,6 +1309,15 @@ UINT64
>  UtDoConstant (
>      char                    *String);
>  
> +char *
> +AcpiUtStrdup (
> +    char                    *String);
> +
> +char *
> +AcpiUtStrcat (
> +    char                    *String1,
> +    char                    *String2);
> +
>  
>  /*
>   * asluuid - UUID support
> @@ -1604,6 +1619,7 @@ DtCreateTemplates (
>  /*
>   * ASL/ASL+ converter debug
>   */
> +ACPI_PRINTF_LIKE (1)
>  void
>  CvDbgPrint (
>      char                    *Fmt,
> diff --git a/src/acpica/source/compiler/asldebug.c b/src/acpica/source/compiler/asldebug.c
> index 2c1dab79..469a58e5 100644
> --- a/src/acpica/source/compiler/asldebug.c
> +++ b/src/acpica/source/compiler/asldebug.c
> @@ -239,7 +239,7 @@ UtDumpIntegerOp (
>      case 8: /* Dword */
>  
>          DbgPrint (ASL_TREE_OUTPUT,
> -            "%*.*X", IntegerLength, IntegerLength, Op->Asl.Value.Integer);
> +            "%*.*X", IntegerLength, IntegerLength, (UINT32) Op->Asl.Value.Integer);
>          break;
>  
>      case 16: /* Qword and Integer */
> diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
> index c5111875..0ba08962 100644
> --- a/src/acpica/source/compiler/asldefine.h
> +++ b/src/acpica/source/compiler/asldefine.h
> @@ -290,7 +290,7 @@
>  
>  #define ASL_PARSE_TREE_DEBUG2 \
>      " %08X %04X %04X %01X     %04X  %04X %05X  %05X   "\
> -    "%08X %08X %08X %08X %08X %08X %04X  %02d  %5d %5d %5d %5d"
> +    "%8p %8p %8p %8p %08X %08X %04X  %02d  %5d %5d %5d %5d"
>  
>  /*
>   * Macros for ASL/ASL+ converter
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index 740f7f34..9020c14d 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -244,7 +244,6 @@ extern const char                   *AslGbl_SpecialNamedObjects[MAX_SPECIAL_NAME
>  #endif
>  
>  
> -
>  /*
>   * Parser and other externals
>   */
> @@ -254,6 +253,7 @@ extern int                          DtParserdebug;
>  extern int                          PrParserdebug;
>  extern const ASL_MAPPING_ENTRY      AslKeywordMapping[];
>  extern char                         *AslCompilertext;
> +extern char                         *DtCompilerParsertext;
>  
>  /*
>   * Older versions of Bison won't emit this external in the generated header.
> diff --git a/src/acpica/source/compiler/aslhelp.c b/src/acpica/source/compiler/aslhelp.c
> index f51b07f8..47d9d306 100644
> --- a/src/acpica/source/compiler/aslhelp.c
> +++ b/src/acpica/source/compiler/aslhelp.c
> @@ -247,6 +247,7 @@ Usage (
>      ACPI_OPTION ("",                "  (Original comments are passed through to ASL+ file)");
>  
>      printf ("\nData Table Compiler:\n");
> +    ACPI_OPTION ("-tp",             "Compile tables with flex/bison prototype");
>      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");
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index b9bb3d67..6778bf64 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -479,12 +479,13 @@ CgGenerateAmlLengths (
>          Op->Asl.AmlLength = strlen (Buffer);
>  
>          /*
> -         * Check for single backslash reference to root,
> -         * make it a null terminated string in the AML
> +         * Check for single backslash reference to root or reference to a name
> +         * consisting of only prefix (^) characters. Make it a null terminated
> +         * string in the AML.
>           */
> -        if (Op->Asl.AmlLength == 1)
> +        if (Op->Asl.AmlLength == 1 || UtNameContainsAllPrefix(Op))
>          {
> -            Op->Asl.AmlLength = 2;
> +            Op->Asl.AmlLength++;
>          }
>          break;
>  
> diff --git a/src/acpica/source/compiler/asllistsup.c b/src/acpica/source/compiler/asllistsup.c
> index e54adb52..9663740a 100644
> --- a/src/acpica/source/compiler/asllistsup.c
> +++ b/src/acpica/source/compiler/asllistsup.c
> @@ -241,7 +241,7 @@ LsDumpAsciiInComment (
>              {
>                  /* Insert a space to break the sequence */
>  
> -                FlPrintFile (FileId, ".", BufChar);
> +                FlPrintFile (FileId, " ");
>              }
>  
>              FlPrintFile (FileId, "%c", BufChar);
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 4dd2dfd0..d918c0cc 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -275,7 +275,6 @@ LdLoadFieldElements (
>      ACPI_STATUS             Status;
>  
>  
> -
>      SourceRegion = UtGetArg (Op, 0);
>      if (SourceRegion)
>      {
> @@ -1031,7 +1030,8 @@ FinishNode:
>   * DESCRIPTION: Check if certain named objects are declared in the incorrect
>   *              scope. Special named objects are listed in
>   *              AslGbl_SpecialNamedObjects and can only be declared at the root
> - *              scope.
> + *              scope. _UID inside of a processor declaration must not be a
> + *              string.
>   *
>   ******************************************************************************/
>  
> @@ -1052,6 +1052,13 @@ LdCheckSpecialNames (
>              return;
>          }
>      }
> +
> +    if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, "_UID") &&
> +        Node->Parent->Type == ACPI_TYPE_PROCESSOR &&
> +        Node->Type == ACPI_TYPE_STRING)
> +    {
> +        AslError (ASL_ERROR, ASL_MSG_INVALID_PROCESSOR_UID , Op, "found a string");
> +    }
>  }
>  
>  
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 2afb20f6..605c412f 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -282,7 +282,6 @@ main (
>          if (ACPI_FAILURE (Status))
>          {
>              ReturnStatus = -1;
> -            goto CleanupAndExit;
>          }
>  
>          Index2++;
> @@ -290,9 +289,10 @@ main (
>  
>      /*
>       * At this point, compilation of a data table or disassembly is complete.
> +     * However, if there is a parse tree, perform compiler analysis and
> +     * generate AML.
>       */
> -    if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag ||
> -        AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> +    if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag || !AslGbl_ParseTreeRoot)
>      {
>          goto CleanupAndExit;
>      }
> @@ -338,7 +338,6 @@ main (
>      }
>  
>  
> -
>  CleanupAndExit:
>  
>      UtFreeLineBuffers ();
> @@ -350,7 +349,7 @@ CleanupAndExit:
>  
>      if (!AcpiGbl_DisasmFlag)
>      {
> -        CmCleanupAndExit ();
> +        ReturnStatus = CmCleanupAndExit ();
>      }
>  
>  
> @@ -400,18 +399,21 @@ AslSignalHandler (
>       * Close all open files
>       * Note: the .pre file is the same as the input source file
>       */
> -    AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
> -
> -    for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> +    if (AslGbl_Files)
>      {
> -        FlCloseFile (i);
> -    }
> +        AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
>  
> -    /* Delete any output files */
> +        for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> +        {
> +            FlCloseFile (i);
> +        }
>  
> -    for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
> -    {
> -        FlDeleteFile (i);
> +        /* Delete any output files */
> +
> +        for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
> +        {
> +            FlDeleteFile (i);
> +        }
>      }
>  
>      printf (ASL_PREFIX "Terminating\n");
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index 48c4dbab..8dd989ca 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -366,7 +366,9 @@ const char                      *AslCompilerMsgs [] =
>  /*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed",
>  /*    ASL_MSG_UNDEFINED_EXTERNAL */         "Named object was declared external but the actual definition does not exist",
>  /*    ASL_MSG_BUFFER_FIELD_OVERFLOW */      "Buffer field extends beyond end of target buffer",
> -/*    ASL_MSG_INVALID_SPECIAL_NAME */       "declaration of this named object outside root scope is illegal"
> +/*    ASL_MSG_INVALID_SPECIAL_NAME */       "declaration of this named object outside root scope is illegal",
> +/*    ASL_MSG_INVALID_PROCESSOR_UID */      "_UID inside processor declaration must be an integer",
> +/*    ASL_MSG_LEGACY_PROCESSOR_OP */        "Legacy Processor() keyword detected. Use Device() keyword instead."
>  };
>  
>  /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index d998f0fe..55473fb5 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -369,6 +369,8 @@ typedef enum
>      ASL_MSG_UNDEFINED_EXTERNAL,
>      ASL_MSG_BUFFER_FIELD_OVERFLOW,
>      ASL_MSG_INVALID_SPECIAL_NAME,
> +    ASL_MSG_INVALID_PROCESSOR_UID,
> +    ASL_MSG_LEGACY_PROCESSOR_OP,
>  
>      /* These messages are used by the Data Table compiler only */
>  
> diff --git a/src/acpica/source/compiler/aslnamesp.c b/src/acpica/source/compiler/aslnamesp.c
> index a3c445af..b5af0cb3 100644
> --- a/src/acpica/source/compiler/aslnamesp.c
> +++ b/src/acpica/source/compiler/aslnamesp.c
> @@ -276,7 +276,7 @@ NsDoOneNamespaceObject (
>  
>      FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u  [%u]  %*s %4.4s - %s",
>          AslGbl_NumNamespaceObjects, Level, (Level * 3), " ",
> -        &Node->Name, AcpiUtGetTypeName (Node->Type));
> +        &Node->Name.Ascii[0], AcpiUtGetTypeName (Node->Type));
>  
>      Op = Node->Op;
>      ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object);
> @@ -429,7 +429,7 @@ NsDoOneNamespaceObject (
>              {
>                  FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
>                      "       [Initial Length  0x%.2X elements]",
> -                    Op->Asl.Value.Integer);
> +                    (UINT32) Op->Asl.Value.Integer);
>              }
>              break;
>  
> @@ -452,7 +452,7 @@ NsDoOneNamespaceObject (
>              {
>                  FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
>                      "        [Initial Length  0x%.2X bytes]",
> -                    Op->Asl.Value.Integer);
> +                    (UINT32) Op->Asl.Value.Integer);
>              }
>              break;
>  
> @@ -531,7 +531,8 @@ NsDoOnePathname (
>          return (Status);
>      }
>  
> -    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n", TargetPath.Pointer);
> +    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n",
> +        ACPI_CAST_PTR (char, TargetPath.Pointer));
>      ACPI_FREE (TargetPath.Pointer);
>      return (AE_OK);
>  }
> diff --git a/src/acpica/source/compiler/asloptions.c b/src/acpica/source/compiler/asloptions.c
> index dc00e1d2..7c178149 100644
> --- a/src/acpica/source/compiler/asloptions.c
> +++ b/src/acpica/source/compiler/asloptions.c
> @@ -837,6 +837,11 @@ AslDoOptions (
>              AslGbl_HexOutputFlag = HEX_OUTPUT_C;
>              break;
>  
> +    case 'p': /* data table flex/bison prototype */
> +
> +            AslGbl_DtLexBisonPrototype = TRUE;
> +            break;
> +
>          case 's':
>  
>              AslGbl_HexOutputFlag = HEX_OUTPUT_ASL;
> diff --git a/src/acpica/source/compiler/aslparseop.c b/src/acpica/source/compiler/aslparseop.c
> index 8fa99f3e..59a54864 100644
> --- a/src/acpica/source/compiler/aslparseop.c
> +++ b/src/acpica/source/compiler/aslparseop.c
> @@ -403,22 +403,22 @@ TrCreateValuedLeafOp (
>      {
>      case PARSEOP_STRING_LITERAL:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_NAMESEG:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_NAMESTRING:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_EISAID:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_METHOD:
> @@ -693,7 +693,8 @@ TrCreateConstantLeafOp (
>      time_t                  CurrentTime;
>      char                    *StaticTimeString;
>      char                    *TimeString;
> -    char                    *Filename;
> +    char                    *Filename = NULL;
> +    ACPI_STATUS             Status;
>  
>  
>      switch (ParseOpcode)
> @@ -727,7 +728,12 @@ TrCreateConstantLeafOp (
>  
>          /* Get the simple filename from the full path */
>  
> -        FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
> +        Status = FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (NULL);
> +        }
> +
>          Op->Asl.Value.String = Filename;
>          break;
>  
> diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
> index 472f777c..c43c1a97 100644
> --- a/src/acpica/source/compiler/aslstartup.c
> +++ b/src/acpica/source/compiler/aslstartup.c
> @@ -467,6 +467,7 @@ AslDoOneFile (
>      /* Determine input file type */
>  
>      AslGbl_FileType = AslDetectSourceFileType (&AslGbl_Files[ASL_FILE_INPUT]);
> +    FileNode->FileType = AslGbl_FileType;
>      if (AslGbl_FileType == ASL_INPUT_TYPE_BINARY)
>      {
>          return (AE_ERROR);
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index 5237c638..7dc642d8 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -507,6 +507,12 @@ TrTransformSubtree (
>          }
>          break;
>  
> +    case PARSEOP_PROCESSOR:
> +
> +        AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName);
> +
> +        break;
> +
>      default:
>  
>          /* Nothing to do here for other opcodes */
> diff --git a/src/acpica/source/compiler/asltypes.h b/src/acpica/source/compiler/asltypes.h
> index 8a6a0750..2df31eab 100644
> --- a/src/acpica/source/compiler/asltypes.h
> +++ b/src/acpica/source/compiler/asltypes.h
> @@ -505,9 +505,12 @@ typedef struct asl_files_node
>      UINT32                  TotalLineCount;
>      UINT32                  OriginalInputFileSize;
>      UINT32                  TotalKeywords;
> +    UINT32                  TotalFields;
> +    UINT32                  OutputByteLength;
>      UINT32                  TotalNamedObjects;
>      UINT32                  TotalExecutableOpcodes;
>      BOOLEAN                 ParserErrorDetected;
> +    UINT8                   FileType;
>  
>  } ASL_GLOBAL_FILE_NODE;
>  
> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
> index 80149247..ed2948d0 100644
> --- a/src/acpica/source/compiler/aslutils.c
> +++ b/src/acpica/source/compiler/aslutils.c
> @@ -223,6 +223,7 @@ UtQueryForOverwrite (
>      char                    *Pathname)
>  {
>      struct stat             StatInfo;
> +    int                     InChar = 0x34;
>  
>  
>      if (!stat (Pathname, &StatInfo))
> @@ -230,7 +231,13 @@ UtQueryForOverwrite (
>          fprintf (stderr, "Target file \"%s\" already exists, overwrite? [y|n] ",
>              Pathname);
>  
> -        if (getchar () != 'y')
> +        InChar = fgetc (stdin);
> +        if (InChar == '\n')
> +        {
> +            InChar = fgetc (stdin);
> +        }
> +
> +        if ((InChar != 'y') && (InChar != 'Y'))
>          {
>              return (FALSE);
>          }
> @@ -559,58 +566,54 @@ UtDisplayOneSummary (
>  
>      /* Summary of main input and output files */
>  
> -    if (AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> +    FileNode = FlGetCurrentFileNode ();
> +    if (!FileNode)
> +    {
> +        fprintf (stderr, "Summary could not be generated");
> +        return;
> +    }
> +
> +    if (FileNode->ParserErrorDetected)
> +    {
> +        FlPrintFile (FileId,
> +            "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
> +            "Input file:", AslGbl_Files[ASL_FILE_INPUT].Filename);
> +    }
> +    else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_DATA)
>      {
>          FlPrintFile (FileId,
> -            "%-14s %s - %u lines, %u bytes, %u fields\n",
> +            "%-14s %s - %7u bytes %6u fields %8u source lines\n",
>              "Table Input:",
> -            AslGbl_Files[ASL_FILE_INPUT].Filename, AslGbl_CurrentLineNumber,
> -            AslGbl_InputByteCount, AslGbl_InputFieldCount);
> +            AslGbl_Files[ASL_FILE_INPUT].Filename,
> +            FileNode->OriginalInputFileSize, FileNode->TotalFields,
> +            FileNode->TotalLineCount);
>  
> -        if ((AslGbl_ExceptionCount[ASL_ERROR] == 0) || (AslGbl_IgnoreErrors))
> -        {
> -            FlPrintFile (FileId,
> -                "%-14s %s - %u bytes\n",
> -                "Binary Output:",
> -                AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, AslGbl_TableLength);
> -        }
> +        FlPrintFile (FileId,
> +            "%-14s %s - %7u bytes\n",
> +            "Binary Output:",
> +            AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, FileNode->OutputByteLength);
>      }
> -    else
> +    else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_ASL)
>      {
> -        FileNode = FlGetCurrentFileNode ();
> -        if (!FileNode)
> -        {
> -            fprintf (stderr, "Summary could not be generated");
> -            return;
> -        }
> -        if (FileNode->ParserErrorDetected)
> -        {
> -            FlPrintFile (FileId,
> -                "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
> -                "ASL Input:", AslGbl_Files[ASL_FILE_INPUT].Filename);
> -        }
> -        else
> +        FlPrintFile (FileId,
> +            "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
> +            "ASL Input:",
> +            AslGbl_Files[ASL_FILE_INPUT].Filename,
> +            FileNode->OriginalInputFileSize,
> +            FileNode->TotalKeywords,
> +            FileNode->TotalLineCount);
> +
> +        /* AML summary */
> +
> +        if (DisplayAMLSummary)
>          {
>              FlPrintFile (FileId,
> -                "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
> -                "ASL Input:",
> -                AslGbl_Files[ASL_FILE_INPUT].Filename,
> -                FileNode->OriginalInputFileSize,
> -                FileNode->TotalKeywords,
> -                FileNode->TotalLineCount);
> -
> -            /* AML summary */
> -
> -            if (DisplayAMLSummary)
> -            {
> -                FlPrintFile (FileId,
> -                    "%-14s %s - %7u bytes %6u opcodes  %6u named objects\n",
> -                    "AML Output:",
> -                    AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
> -                    FlGetFileSize (ASL_FILE_AML_OUTPUT),
> -                    FileNode->TotalExecutableOpcodes,
> -                    FileNode->TotalNamedObjects);
> -            }
> +                "%-14s %s - %7u bytes %6u opcodes  %6u named objects\n",
> +                "AML Output:",
> +                AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
> +                FlGetFileSize (ASL_FILE_AML_OUTPUT),
> +                FileNode->TotalExecutableOpcodes,
> +                FileNode->TotalNamedObjects);
>          }
>      }
>  
> @@ -992,6 +995,37 @@ UtAttachNamepathToOwner (
>  }
>  
>  
> +/*******************************************************************************
> + *
> + * FUNCTION:    UtNameContainsAllPrefix
> + *
> + * PARAMETERS:  Op                  - Op containing NameString
> + *
> + * RETURN:      NameString consists of all ^ characters
> + *
> + * DESCRIPTION: Determine if this Op contains a name segment that consists of
> + *              all '^' characters.
> + *
> + ******************************************************************************/
> +
> +BOOLEAN
> +UtNameContainsAllPrefix (
> +    ACPI_PARSE_OBJECT       *Op)
> +{
> +    UINT32                  Length = Op->Asl.AmlLength;
> +    UINT32                  i;
> +
> +    for (i = 0; i < Length; i++)
> +    {
> +        if (Op->Asl.Value.String[i] != '^')
> +        {
> +            return (FALSE);
> +        }
> +    }
> +
> +    return (TRUE);
> +}
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    UtDoConstant
> @@ -1026,3 +1060,56 @@ UtDoConstant (
>  
>      return (ConvertedInteger);
>  }
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION:    AcpiUtStrdup
> + *
> + * PARAMETERS:  String1             - string to duplicate
> + *
> + * RETURN:      int that signifies string relationship. Zero means strings
> + *              are equal.
> + *
> + * DESCRIPTION: Duplicate the string using UtCacheAlloc to avoid manual memory
> + *              reclamation.
> + *
> + ******************************************************************************/
> +
> +char *
> +AcpiUtStrdup (
> +    char                    *String)
> +{
> +    char                    *NewString = (char *) UtLocalCalloc (strlen (String) + 1);
> +
> +
> +    strcpy (NewString, String);
> +    return (NewString);
> +}
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION:    AcpiUtStrcat
> + *
> + * PARAMETERS:  String1
> + *              String2
> + *
> + * RETURN:      New string with String1 concatenated with String2
> + *
> + * DESCRIPTION: Concatenate string1 and string2
> + *
> + ******************************************************************************/
> +
> +char *
> +AcpiUtStrcat (
> +    char                    *String1,
> +    char                    *String2)
> +{
> +    UINT32                  String1Length = strlen (String1);
> +    char                    *NewString = (char *) UtLocalCalloc (strlen (String1) + strlen (String2) + 1);
> +
> +    strcpy (NewString, String1);
> +    strcpy (NewString + String1Length, String2);
> +    return (NewString);
> +}
> diff --git a/src/acpica/source/compiler/aslxrefout.c b/src/acpica/source/compiler/aslxrefout.c
> index 2bd43a07..ce8c8ddd 100644
> --- a/src/acpica/source/compiler/aslxrefout.c
> +++ b/src/acpica/source/compiler/aslxrefout.c
> @@ -799,7 +799,7 @@ OtXrefWalkPart3 (
>      else
>      {
>          FlPrintFile (ASL_FILE_XREF_OUTPUT,
> -            "            %u references to this object in this module\n",
> +            "            %u references to this object in this module [%s]\n",
>              XrefInfo->ThisObjectReferences, ParentPath);
>      }
>  
> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
> index 09cb3e6c..b6a144fe 100644
> --- a/src/acpica/source/compiler/dtcompile.c
> +++ b/src/acpica/source/compiler/dtcompile.c
> @@ -161,7 +161,7 @@ static char                 VersionString[9];
>  
>  /* Local prototypes */
>  
> -static ACPI_STATUS
> +void
>  DtInitialize (
>      void);
>  
> @@ -196,16 +196,12 @@ DtDoCompile (
>      ACPI_STATUS             Status;
>      UINT8                   Event;
>      DT_FIELD                *FieldList;
> +    ASL_GLOBAL_FILE_NODE    *FileNode;
>  
>  
>      /* Initialize globals */
>  
> -    Status = DtInitialize ();
> -    if (ACPI_FAILURE (Status))
> -    {
> -        printf ("Error during compiler initialization, 0x%X\n", Status);
> -        return (Status);
> -    }
> +    DtInitialize ();
>  
>      /* Preprocessor */
>  
> @@ -223,13 +219,29 @@ DtDoCompile (
>          }
>      }
>  
> -    /*
> -     * Scan the input file (file is already open) and
> -     * build the parse tree
> -     */
> -    Event = UtBeginEvent ("Scan and parse input file");
> -    FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
> -    UtEndEvent (Event);
> +    /* Compile the parse tree */
> +
> +    if (AslGbl_DtLexBisonPrototype)
> +    {
> +        Event = UtBeginEvent ("Parse data table in prototype mode");
> +
> +        DtCompilerInitLexer (AslGbl_Files[ASL_FILE_INPUT].Handle);
> +        DtCompilerParserparse ();
> +        FieldList = AslGbl_FieldList;
> +        DtCompilerTerminateLexer ();
> +
> +        UtEndEvent (Event);
> +    }
> +    else
> +    {
> +        /*
> +         * Scan the input file (file is already open) and
> +         * build the parse tree
> +         */
> +        Event = UtBeginEvent ("Scan and parse input file");
> +        FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
> +        UtEndEvent (Event);
> +    }
>  
>      /* Did the parse tree get successfully constructed? */
>  
> @@ -245,14 +257,27 @@ DtDoCompile (
>  
>      Event = UtBeginEvent ("Compile parse tree");
>  
> -    /*
> -     * Compile the parse tree
> -     */
>      Status = DtCompileDataTable (&FieldList);
>      UtEndEvent (Event);
>  
> +    FileNode = FlGetCurrentFileNode ();
> +    if (!FileNode)
> +    {
> +        fprintf (stderr, "Summary for %s could not be generated",
> +            AslGbl_Files[ASL_FILE_INPUT].Filename);
> +    }
> +    else
> +    {
> +        FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
> +        FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
> +        DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
> +                FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
> +    }
> +
>      if (ACPI_FAILURE (Status))
>      {
> +        FileNode->ParserErrorDetected = TRUE;
> +
>          /* TBD: temporary error message. Msgs should come from function above */
>  
>          DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
> @@ -276,6 +301,14 @@ DtDoCompile (
>      HxDoHexOutput ();
>      DtWriteTableToListing ();
>  
> +    /* Save the compile time statistics to the current file node */
> +
> +    if (FileNode)
> +    {
> +        FileNode->TotalFields = AslGbl_InputFieldCount;
> +        FileNode->OutputByteLength = AslGbl_TableLength;
> +    }
> +
>      return (Status);
>  }
>  
> @@ -293,25 +326,12 @@ DtDoCompile (
>   *
>   *****************************************************************************/
>  
> -static ACPI_STATUS
> +void
>  DtInitialize (
>      void)
>  {
> -    ACPI_STATUS             Status;
>  
>  
> -    Status = AcpiOsInitialize ();
> -    if (ACPI_FAILURE (Status))
> -    {
> -        return (Status);
> -    }
> -
> -    Status = AcpiUtInitGlobals ();
> -    if (ACPI_FAILURE (Status))
> -    {
> -        return (Status);
> -    }
> -
>      AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */
>  
>      AslGbl_FieldList = NULL;
> @@ -319,7 +339,7 @@ DtInitialize (
>      AslGbl_SubtableStack = NULL;
>  
>      sprintf (VersionString, "%X", (UINT32) ACPI_CA_VERSION);
> -    return (AE_OK);
> +    return;
>  }
>  
>  
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index ffa17f63..639c22cb 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -194,7 +194,7 @@ typedef struct dt_field
>  {
>      char                    *Name;       /* Field name (from name : value) */
>      char                    *Value;      /* Field value (from name : value) */
> -    UINT32                  StringLength;/* Length of Value */
> +    UINT32                  StringLength; /* Length of Value */
>      struct dt_field         *Next;       /* Next field */
>      struct dt_field         *NextLabel;  /* If field is a label, next label */
>      UINT32                  Line;        /* Line number for this field */
> @@ -256,6 +256,10 @@ DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_LabelList, NULL);
>  
>  DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_CurrentTableOffset, 0);
>  
> +/* Data table compiler Flex/Bison prototype */
> +
> +DT_EXTERN BOOLEAN           DT_INIT_GLOBAL (AslGbl_DtLexBisonPrototype, FALSE);
> +
>  /* Local caches */
>  
>  DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_SubtableCount, 0);
> @@ -288,6 +292,14 @@ DtCompilePadding (
>      UINT32                  Length,
>      DT_SUBTABLE             **RetSubtable);
>  
> +void
> +DtCreateField (
> +    char                    *Name,
> +    char                    *Value,
> +    UINT32                  Line,
> +    UINT32                  Offset,
> +    UINT32                  Column,
> +    UINT32                  NameColumn);
>  
>  /* dtio - binary and text input/output */
>  
> @@ -427,10 +439,23 @@ DtCompileFlag (
>  
>  /* dtparser - lex/yacc files */
>  
> +UINT64                      DtCompilerParserResult; /* Expression return value */
> +int
> +DtCompilerParserparse (
> +    void);
> +
>  UINT64
>  DtEvaluateExpression (
>      char                    *ExprString);
>  
> +void
> +DtCompilerInitLexer (
> +    FILE                    *inFile);
> +
> +void
> +DtCompilerTerminateLexer (
> +    void);
> +
>  int
>  DtInitLexer (
>      char                    *String);
> diff --git a/src/acpica/source/compiler/dtcompilerparser.l b/src/acpica/source/compiler/dtcompilerparser.l
> new file mode 100644
> index 00000000..0d68f41e
> --- /dev/null
> +++ b/src/acpica/source/compiler/dtcompilerparser.l
> @@ -0,0 +1,288 @@
> +%{
> +/******************************************************************************
> + *
> + * Module Name: dtcompilerparser.l - Flex input file for table compiler lexer
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, 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.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions, and the following disclaimer,
> + *    without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + *    substantially similar to the "NO WARRANTY" disclaimer below
> + *    ("Disclaimer") and any redistribution must be conditioned upon
> + *    including a substantially similar Disclaimer requirement for further
> + *    binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + *    of any contributors may be used to endorse or promote products derived
> + *    from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "aslcompiler.h"
> +#include "dtcompilerparser.y.h"
> +
> +YYSTYPE DtCompilerlval;
> +
> +#define _COMPONENT          ACPI_COMPILER
> +        ACPI_MODULE_NAME    ("dtcompilerscanner")
> +
> +/* handle locations */
> +
> +int DtCompilerParsercolumn = 1;
> +int DtCompilerParserByteOffset = 0;
> +
> +#define YY_USER_ACTION \
> +            DtCompilerParserlloc.first_line = DtCompilerParserlloc.last_line = DtCompilerParserlineno; \
> +            DtCompilerParserlloc.first_column = DtCompilerParsercolumn; \
> +            DtCompilerParserlloc.first_byte_offset = DtCompilerParserByteOffset; \
> +            DtCompilerParserlloc.last_column = DtCompilerParsercolumn + DtCompilerParserleng-1; \
> +            DtCompilerParsercolumn += DtCompilerParserleng; \
> +            DtCompilerParserByteOffset += DtCompilerParserleng; \
> +            DbgPrint (ASL_PARSE_OUTPUT,\
> +                "user action occurred. DtCompilerParserlloc.first_line: %u offset: %u\n",\
> +                DtCompilerParserlloc.first_line, DtCompilerParserlloc.first_byte_offset);
> +%}
> +
> +%option nounput noinput yylineno
> +
> +    /* Indicates a state used for parsing multiline C comments */
> +%x ML_COMMENT
> +%x DATA_STATE
> +
> +WhiteSpace      [ \t\v\r]+
> +NewLines        [\n]+
> +
> +    /* Avoid ", \n, and [] as a part of label name. These are not valid characters of a label name */
> +LabelName       [^ ":\n\[\]]([^":\n\[\]]*[^" :\n\[\]])?
> +
> +    /* Avoid ", \n, \\, and [] as a part of data. These are not valid characters of data */
> +Data            [^ \\":\n\[\]]([^":\n\[\]\\]*[^" :\n\[\]\\])?
> +
> +Text            [^ ":\n][^":\n]*
> +Comment         \[[^\n\[\]]*\]
> +CommentField    {LabelName}{WhiteSpace}*:{WhiteSpace}{Comment}?$
> +
> +
> +%%
> +
> +<DATA_STATE>{WhiteSpace}"\\\n" {
> +        DbgPrint(ASL_PARSE_OUTPUT,"Continuation matched\n");
> +        return (DT_PARSEOP_LINE_CONTINUATION);
> +    }
> +
> +":" {
> +        DbgPrint(ASL_PARSE_OUTPUT, ": Matched\n");
> +        BEGIN (DATA_STATE);
> +        return (':');
> +    }
> +
> +<INITIAL,DATA_STATE>{WhiteSpace} { DbgPrint(ASL_PARSE_OUTPUT,"Whitespace matched\n"); }
> +
> +<INITIAL,DATA_STATE>{Comment}    { DbgPrint(ASL_PARSE_OUTPUT,"Comment matched\n"); }
> +
> +"/*"                     { BEGIN (ML_COMMENT); }
> +<ML_COMMENT>"*/"         { BEGIN (INITIAL); }
> +<ML_COMMENT>"*/\n"       { BEGIN (INITIAL); }
> +<ML_COMMENT>([^*]|\n)+|. /* Ignore */
> +"//".*                   /* Ignore */
> +
> +
> +<DATA_STATE>{Data} {
> +      char *s;
> +      int size = strlen (DtCompilerParsertext);
> +      s=UtLocalCacheCalloc (size + 1);
> +      AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
> +      DtCompilerParserlval.s = s;
> +      DbgPrint (ASL_PARSE_OUTPUT, "Data: %s\n", s);
> +      return (DT_PARSEOP_DATA);
> +}
> +
> +{CommentField}  /* ignore */
> +
> +{LabelName} {
> +    char *s;
> +    int size = strlen (DtCompilerParsertext);
> +    s=UtLocalCacheCalloc (size + 1);
> +    AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
> +    DtCompilerParserlval.s = s;
> +    DbgPrint (ASL_PARSE_OUTPUT, "Label: %s\n", s);
> +    return (DT_PARSEOP_LABEL);
> +}
> +
> +
> +<DATA_STATE>\"{Text}?\" { // remove outer quotes from the string, they are unnecessary
> +    char *s;
> +    int size = strlen (DtCompilerParsertext);
> +    s=UtLocalCacheCalloc (size - 1);
> +    AcpiUtSafeStrncpy (s, DtCompilerParsertext + 1, size - 1);
> +    DtCompilerParserlval.s = s;
> +    DbgPrint (ASL_PARSE_OUTPUT, "String Data: %s\n", s);
> +    BEGIN (INITIAL);
> +    return (DT_PARSEOP_STRING_DATA);
> +}
> +
> +
> +<INITIAL,DATA_STATE>{NewLines} {
> +    DbgPrint(ASL_PARSE_OUTPUT,
> +        "Newline matched (data state). Current line number: %u\n",DtCompilerParserlineno);
> +    BEGIN (INITIAL); DtCompilerParsercolumn = 1;
> +}
> +
> +
> +%%
> +
> +
> +/*
> + * Local support functions
> + */
> +
> +void
> +DtCompilerInitLexer (
> +    FILE                *inFile)
> +{
> +    yyin = inFile;
> +}
> +
> +void
> +DtCompilerTerminateLexer (
> +    void)
> +{
> +    /*
> +     * Flex/Bison increments the lineno for the EOF so decrement by 1 to get
> +     * the correct number of lines.
> +     */
> +    AslGbl_CurrentLineNumber = DtCompilerParserlineno - 1;
> +    AslGbl_InputByteCount = DtCompilerParserByteOffset;
> +}
> diff --git a/src/acpica/source/compiler/dtcompilerparser.y b/src/acpica/source/compiler/dtcompilerparser.y
> new file mode 100644
> index 00000000..ba9d2827
> --- /dev/null
> +++ b/src/acpica/source/compiler/dtcompilerparser.y
> @@ -0,0 +1,287 @@
> +%{
> +/******************************************************************************
> + *
> + * Module Name: dtcompilerparser.y - Bison input file for table compiler parser
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, 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.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions, and the following disclaimer,
> + *    without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + *    substantially similar to the "NO WARRANTY" disclaimer below
> + *    ("Disclaimer") and any redistribution must be conditioned upon
> + *    including a substantially similar Disclaimer requirement for further
> + *    binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + *    of any contributors may be used to endorse or promote products derived
> + *    from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "aslcompiler.h"
> +
> +
> +#define _COMPONENT          DT_COMPILER
> +        ACPI_MODULE_NAME    ("dtcompilerparser")
> +
> +void *                      AslLocalAllocate (unsigned int Size);
> +
> +/* Bison/yacc configuration */
> +
> +#undef alloca
> +#define alloca              AslLocalAllocate
> +
> +int                         DtCompilerParserlex (void);
> +int                         DtCompilerParserparse (void);
> +void                        DtCompilerParsererror (char const *msg);
> +extern char                 *DtCompilerParsertext;
> +extern DT_FIELD             *AslGbl_CurrentField;
> +
> +extern UINT64               DtCompilerParserResult; /* Expression return value */
> +extern UINT64               DtCompilerParserlineno; /* Current line number */
> +
> +/* Bison/yacc configuration */
> +
> +#define yytname             DtCompilerParsername
> +#define YYDEBUG             1               /* Enable debug output */
> +#define YYERROR_VERBOSE     1               /* Verbose error messages */
> +#define YYFLAG              -32768
> +
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors  */
> +
> +#define YYMALLOC            malloc
> +#define YYFREE              free
> +
> +%}
> +
> +%code requires {
> +
> +    typedef struct YYLTYPE {
> +        int first_line;
> +        int last_line;
> +        int first_column;
> +        int last_column;
> +        int first_byte_offset;
> +    } YYLTYPE;
> +
> +    #define YYLTYPE_IS_DECLARED 1
> +}
> +
> +
> +%union {
> +    char                *s;
> +    DT_FIELD            *f;
> +}
> +
> +
> +%type  <f> Table
> +%token <s> DT_PARSEOP_DATA
> +%token <s> DT_PARSEOP_LABEL
> +%token <s> DT_PARSEOP_STRING_DATA
> +%token <s> DT_PARSEOP_LINE_CONTINUATION
> +%type  <s> Data
> +%type  <s> Datum
> +%type  <s> MultiLineData
> +%type  <s> MultiLineDataList
> +
> +
> +%%
> +
> +Table
> +    :
> +    FieldList { DtCompilerParserResult = 5;}
> +    ;
> +
> +FieldList
> +    : Field FieldList
> +    | Field
> +    ;
> +
> +Field
> +    : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, (@3).first_line, (@1).first_byte_offset, (@1).first_column, (@3).first_column); }
> +    ;
> +
> +Data
> +    : MultiLineDataList        { $$ = $1; }
> +    | Datum                    { $$ = $1; }
> +    | Datum MultiLineDataList  { $$ = $1; } /* combine the string with strcat */
> +    ;
> +
> +MultiLineDataList
> +    : MultiLineDataList MultiLineData { $$ = AcpiUtStrcat(AcpiUtStrcat($1, " "), $2); } /* combine the strings with strcat */
> +    | MultiLineData                   { $$ = $1; }
> +    ;
> +
> +MultiLineData
> +    : DT_PARSEOP_LINE_CONTINUATION Datum { DbgPrint (ASL_PARSE_OUTPUT, "line continuation detected\n"); $$ = $2; }
> +    ;
> +
> +Datum
> +    : DT_PARSEOP_DATA        { DbgPrint (ASL_PARSE_OUTPUT, "parser        data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
> +    | DT_PARSEOP_STRING_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
> +    ;
> +
> +
> +%%
> +
> +
> +/*
> + * Local support functions, including parser entry point
> + */
> +/******************************************************************************
> + *
> + * FUNCTION:    DtCompilerParsererror
> + *
> + * PARAMETERS:  Message             - Parser-generated error message
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Handler for parser errors
> + *
> + *****************************************************************************/
> +
> +void
> +DtCompilerParsererror (
> +    char const              *Message)
> +{
> +    DtError (ASL_ERROR, ASL_MSG_SYNTAX,
> +        AslGbl_CurrentField, (char *) Message);
> +}
> +
> +int
> +DtCompilerParserwrap(void)
> +{
> +  return (1);
> +}
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index 74ebf570..1f716761 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -280,7 +280,9 @@ DtCompileString (
>  
>      if (Length > ByteLength)
>      {
> -        sprintf (AslGbl_MsgBuffer, "Maximum %u characters", ByteLength);
> +        sprintf (AslGbl_MsgBuffer,
> +            "Maximum %u characters, found %u characters [%s]",
> +            ByteLength, Length, Field->Value);
>          DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
>          Length = ByteLength;
>      }
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index ae827513..d027353c 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -493,6 +493,59 @@ DtParseLine (
>  }
>  
>  
> +/******************************************************************************
> + *
> + * FUNCTION:    DtCreateField
> + *
> + * PARAMETERS: Name
> + *             Value
> + *             Line
> + *             Offset
> + *             Column
> + *             NameColumn
> + *
> + * RETURN:     None
> + *
> + * DESCRIPTION: Create a field
> + *
> + *****************************************************************************/
> +
> +void
> +DtCreateField (
> +    char                    *Name,
> +    char                    *Value,
> +    UINT32                  Line,
> +    UINT32                  Offset,
> +    UINT32                  Column,
> +    UINT32                  NameColumn)
> +{
> +    DT_FIELD                *Field = UtFieldCacheCalloc ();
> +
> +
> +    Field->StringLength = 0;
> +    if (Name)
> +    {
> +        Field->Name =
> +            strcpy (UtLocalCacheCalloc (strlen (Name) + 1), Name);
> +    }
> +
> +    if (Value)
> +    {
> +        Field->StringLength = strlen (Value);
> +        Field->Value =
> +            strcpy (UtLocalCacheCalloc (Field->StringLength + 1), Value);
> +    }
> +
> +    Field->Line = Line;
> +    Field->ByteOffset = Offset;
> +    Field->NameColumn = NameColumn;
> +    Field->Column = Column;
> +    DtLinkField (Field);
> +
> +    DtDumpFieldList (AslGbl_FieldList);
> +}
> +
> +
>  /******************************************************************************
>   *
>   * FUNCTION:    DtGetNextLine
> @@ -1117,7 +1170,7 @@ DtDumpSubtableInfo (
>  {
>  
>      DbgPrint (ASL_DEBUG_OUTPUT,
> -        "[%.04X] %24s %.08X %.08X %.08X %.08X %.08X %p %p %p\n",
> +        "[%.04X] %24s %.08X %.08X %.08X %.08X %p %p %p %p\n",
>          Subtable->Depth, Subtable->Name, Subtable->Length, Subtable->TotalLength,
>          Subtable->SizeOfLengthField, Subtable->Flags, Subtable,
>          Subtable->Parent, Subtable->Child, Subtable->Peer);
> @@ -1131,7 +1184,7 @@ DtDumpSubtableTree (
>  {
>  
>      DbgPrint (ASL_DEBUG_OUTPUT,
> -        "[%.04X] %24s %*s%08X (%.02X) - (%.02X)\n",
> +        "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n",
>          Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ",
>          Subtable, Subtable->Length, Subtable->TotalLength);
>  }
> @@ -1225,7 +1278,7 @@ DtWriteFieldToListing (
>      if (strlen (Field->Value) > 64)
>      {
>          FlPrintFile (ASL_FILE_LISTING_OUTPUT, "...Additional data, length 0x%X\n",
> -            strlen (Field->Value));
> +            (UINT32) strlen (Field->Value));
>      }
>  
>      FlPrintFile (ASL_FILE_LISTING_OUTPUT, "\n");
> diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
> index 2dc09334..72b14101 100644
> --- a/src/acpica/source/compiler/dtparser.l
> +++ b/src/acpica/source/compiler/dtparser.l
> @@ -227,7 +227,6 @@ int
>  DtInitLexer (
>      char                    *String)
>  {
> -
>      LexBuffer = yy_scan_string (String);
>      return (LexBuffer == NULL);
>  }
> @@ -236,6 +235,5 @@ void
>  DtTerminateLexer (
>      void)
>  {
> -
>      yy_delete_buffer (LexBuffer);
>  }
> diff --git a/src/acpica/source/compiler/dttemplate.c b/src/acpica/source/compiler/dttemplate.c
> index 4cc6c040..a53b9521 100644
> --- a/src/acpica/source/compiler/dttemplate.c
> +++ b/src/acpica/source/compiler/dttemplate.c
> @@ -509,7 +509,7 @@ DtCreateOneTemplate (
>      AcpiUtStrlwr (DisasmFilename);
>      if (!UtQueryForOverwrite (DisasmFilename))
>      {
> -        return (AE_ERROR);
> +        return (AE_OK);
>      }
>  
>      File = fopen (DisasmFilename, "w+");
> diff --git a/src/acpica/source/compiler/prmacros.c b/src/acpica/source/compiler/prmacros.c
> index e3ee5beb..14be2a75 100644
> --- a/src/acpica/source/compiler/prmacros.c
> +++ b/src/acpica/source/compiler/prmacros.c
> @@ -223,7 +223,7 @@ PrAddDefine (
>      DefineInfo = PrMatchDefine (Identifier);
>      if (DefineInfo)
>      {
> -        DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID,
> +        DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
>              "#define: name already exists: %s\n",
>              AslGbl_CurrentLineNumber, Identifier);
>  
> diff --git a/src/acpica/source/compiler/prscan.c b/src/acpica/source/compiler/prscan.c
> index 9138ba5d..109da26a 100644
> --- a/src/acpica/source/compiler/prscan.c
> +++ b/src/acpica/source/compiler/prscan.c
> @@ -850,7 +850,7 @@ PrDoDirective (
>  
>          DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID
>              "Start #include file \"%s\"\n", AslGbl_CurrentLineNumber,
> -            Token, AslGbl_CurrentLineNumber);
> +            Token);
>  
>          PrDoIncludeFile (Token);
>          break;
> @@ -1356,7 +1356,7 @@ PrDoIncludeBuffer (
>      {
>          if (!(i % 8))
>          {
> -            FlPrintFile (ASL_FILE_PREPROCESSOR, "\n   ", c);
> +            FlPrintFile (ASL_FILE_PREPROCESSOR, "\n   ");
>          }
>  
>          FlPrintFile (ASL_FILE_PREPROCESSOR, " 0x%2.2X,", c);
> @@ -1369,6 +1369,6 @@ PrDoIncludeBuffer (
>  
>      /* Close the Name() operator */
>  
> -    FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n", BufferName);
> +    FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n");
>      fclose (BinaryBufferFile);
>  }
> diff --git a/src/acpica/source/components/debugger/dbhistry.c b/src/acpica/source/components/debugger/dbhistry.c
> index 6136c801..06971915 100644
> --- a/src/acpica/source/components/debugger/dbhistry.c
> +++ b/src/acpica/source/components/debugger/dbhistry.c
> @@ -284,7 +284,7 @@ AcpiDbDisplayHistory (
>      {
>          if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
>          {
> -            AcpiOsPrintf ("%3ld  %s\n",
> +            AcpiOsPrintf ("%3u  %s\n",
>                  AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
>                  AcpiGbl_HistoryBuffer[HistoryIndex].Command);
>          }
> diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
> index d2e54b4e..d091d351 100644
> --- a/src/acpica/source/components/debugger/dbinput.c
> +++ b/src/acpica/source/components/debugger/dbinput.c
> @@ -785,7 +785,7 @@ AcpiDbGetLine (
>      {
>          AcpiOsPrintf (
>              "Buffer overflow while parsing input line (max %u characters)\n",
> -            sizeof (AcpiGbl_DbParsedBuf));
> +            (UINT32) sizeof (AcpiGbl_DbParsedBuf));
>          return (0);
>      }
>  
> @@ -1060,10 +1060,10 @@ AcpiDbCommandDispatch (
>          if (ParamCount == 0)
>          {
>              AcpiOsPrintf (
> -                "Current debug level for file output is:    %8.8lX\n",
> +                "Current debug level for file output is:    %8.8X\n",
>                  AcpiGbl_DbDebugLevel);
>              AcpiOsPrintf (
> -                "Current debug level for console output is: %8.8lX\n",
> +                "Current debug level for console output is: %8.8X\n",
>                  AcpiGbl_DbConsoleDebugLevel);
>          }
>          else if (ParamCount == 2)
> @@ -1072,7 +1072,7 @@ AcpiDbCommandDispatch (
>              AcpiGbl_DbConsoleDebugLevel =
>                  strtoul (AcpiGbl_DbArgs[1], NULL, 16);
>              AcpiOsPrintf (
> -                "Debug Level for console output was %8.8lX, now %8.8lX\n",
> +                "Debug Level for console output was %8.8X, now %8.8X\n",
>                  Temp, AcpiGbl_DbConsoleDebugLevel);
>          }
>          else
> @@ -1080,7 +1080,7 @@ AcpiDbCommandDispatch (
>              Temp = AcpiGbl_DbDebugLevel;
>              AcpiGbl_DbDebugLevel = strtoul (AcpiGbl_DbArgs[1], NULL, 16);
>              AcpiOsPrintf (
> -                "Debug Level for file output was %8.8lX, now %8.8lX\n",
> +                "Debug Level for file output was %8.8X, now %8.8X\n",
>                  Temp, AcpiGbl_DbDebugLevel);
>          }
>          break;
> diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
> index 983faae0..6893c550 100644
> --- a/src/acpica/source/components/debugger/dbmethod.c
> +++ b/src/acpica/source/components/debugger/dbmethod.c
> @@ -493,6 +493,11 @@ AcpiDbDisassembleMethod (
>      }
>  
>      Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId);
> +    if (ACPI_FAILURE(Status))
> +    {
> +        return (Status);
> +    }
> +
>      WalkState->OwnerId = ObjDesc->Method.OwnerId;
>  
>      /* Push start scope on scope stack and make it current */
> diff --git a/src/acpica/source/components/debugger/dbstats.c b/src/acpica/source/components/debugger/dbstats.c
> index 06729cca..1293759d 100644
> --- a/src/acpica/source/components/debugger/dbstats.c
> +++ b/src/acpica/source/components/debugger/dbstats.c
> @@ -544,14 +544,14 @@ AcpiDbDisplayStatistics (
>  
>          for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)
>          {
> -            AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),
> +            AcpiOsPrintf ("%16.16s %10u %10u\n", AcpiUtGetTypeName (i),
>                  AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);
>          }
>  
> -        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown",
> +        AcpiOsPrintf ("%16.16s %10u %10u\n", "Misc/Unknown",
>              AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc);
>  
> -        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:",
> +        AcpiOsPrintf ("%16.16s %10u %10u\n", "TOTALS:",
>              AcpiGbl_NumNodes, AcpiGbl_NumObjects);
>          break;
>  
> @@ -577,17 +577,15 @@ AcpiDbDisplayStatistics (
>      case CMD_STAT_MISC:
>  
>          AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
> -        AcpiOsPrintf ("Calls to AcpiPsFind:..  ........% 7ld\n",
> +        AcpiOsPrintf ("%-28s:       %7u\n", "Calls to AcpiPsFind",
>              AcpiGbl_PsFindCount);
> -        AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
> +        AcpiOsPrintf ("%-28s:       %7u\n", "Calls to AcpiNsLookup",
>              AcpiGbl_NsLookupCount);
>  
> -        AcpiOsPrintf ("\n");
> -
> -        AcpiOsPrintf ("Mutex usage:\n\n");
> +        AcpiOsPrintf ("\nMutex usage:\n\n");
>          for (i = 0; i < ACPI_NUM_MUTEX; i++)
>          {
> -            AcpiOsPrintf ("%-28s:       % 7ld\n",
> +            AcpiOsPrintf ("%-28s:       %7u\n",
>                  AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
>          }
>          break;
> @@ -596,50 +594,50 @@ AcpiDbDisplayStatistics (
>  
>          AcpiOsPrintf ("\nInternal object sizes:\n\n");
>  
> -        AcpiOsPrintf ("Common           %3d\n", sizeof (ACPI_OBJECT_COMMON));
> -        AcpiOsPrintf ("Number           %3d\n", sizeof (ACPI_OBJECT_INTEGER));
> -        AcpiOsPrintf ("String           %3d\n", sizeof (ACPI_OBJECT_STRING));
> -        AcpiOsPrintf ("Buffer           %3d\n", sizeof (ACPI_OBJECT_BUFFER));
> -        AcpiOsPrintf ("Package          %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
> -        AcpiOsPrintf ("BufferField      %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
> -        AcpiOsPrintf ("Device           %3d\n", sizeof (ACPI_OBJECT_DEVICE));
> -        AcpiOsPrintf ("Event            %3d\n", sizeof (ACPI_OBJECT_EVENT));
> -        AcpiOsPrintf ("Method           %3d\n", sizeof (ACPI_OBJECT_METHOD));
> -        AcpiOsPrintf ("Mutex            %3d\n", sizeof (ACPI_OBJECT_MUTEX));
> -        AcpiOsPrintf ("Region           %3d\n", sizeof (ACPI_OBJECT_REGION));
> -        AcpiOsPrintf ("PowerResource    %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
> -        AcpiOsPrintf ("Processor        %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
> -        AcpiOsPrintf ("ThermalZone      %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
> -        AcpiOsPrintf ("RegionField      %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
> -        AcpiOsPrintf ("BankField        %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
> -        AcpiOsPrintf ("IndexField       %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
> -        AcpiOsPrintf ("Reference        %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
> -        AcpiOsPrintf ("Notify           %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
> -        AcpiOsPrintf ("AddressSpace     %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
> -        AcpiOsPrintf ("Extra            %3d\n", sizeof (ACPI_OBJECT_EXTRA));
> -        AcpiOsPrintf ("Data             %3d\n", sizeof (ACPI_OBJECT_DATA));
> +        AcpiOsPrintf ("Common           %3d\n", (UINT32) sizeof (ACPI_OBJECT_COMMON));
> +        AcpiOsPrintf ("Number           %3d\n", (UINT32) sizeof (ACPI_OBJECT_INTEGER));
> +        AcpiOsPrintf ("String           %3d\n", (UINT32) sizeof (ACPI_OBJECT_STRING));
> +        AcpiOsPrintf ("Buffer           %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER));
> +        AcpiOsPrintf ("Package          %3d\n", (UINT32) sizeof (ACPI_OBJECT_PACKAGE));
> +        AcpiOsPrintf ("BufferField      %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER_FIELD));
> +        AcpiOsPrintf ("Device           %3d\n", (UINT32) sizeof (ACPI_OBJECT_DEVICE));
> +        AcpiOsPrintf ("Event            %3d\n", (UINT32) sizeof (ACPI_OBJECT_EVENT));
> +        AcpiOsPrintf ("Method           %3d\n", (UINT32) sizeof (ACPI_OBJECT_METHOD));
> +        AcpiOsPrintf ("Mutex            %3d\n", (UINT32) sizeof (ACPI_OBJECT_MUTEX));
> +        AcpiOsPrintf ("Region           %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION));
> +        AcpiOsPrintf ("PowerResource    %3d\n", (UINT32) sizeof (ACPI_OBJECT_POWER_RESOURCE));
> +        AcpiOsPrintf ("Processor        %3d\n", (UINT32) sizeof (ACPI_OBJECT_PROCESSOR));
> +        AcpiOsPrintf ("ThermalZone      %3d\n", (UINT32) sizeof (ACPI_OBJECT_THERMAL_ZONE));
> +        AcpiOsPrintf ("RegionField      %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION_FIELD));
> +        AcpiOsPrintf ("BankField        %3d\n", (UINT32) sizeof (ACPI_OBJECT_BANK_FIELD));
> +        AcpiOsPrintf ("IndexField       %3d\n", (UINT32) sizeof (ACPI_OBJECT_INDEX_FIELD));
> +        AcpiOsPrintf ("Reference        %3d\n", (UINT32) sizeof (ACPI_OBJECT_REFERENCE));
> +        AcpiOsPrintf ("Notify           %3d\n", (UINT32) sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
> +        AcpiOsPrintf ("AddressSpace     %3d\n", (UINT32) sizeof (ACPI_OBJECT_ADDR_HANDLER));
> +        AcpiOsPrintf ("Extra            %3d\n", (UINT32) sizeof (ACPI_OBJECT_EXTRA));
> +        AcpiOsPrintf ("Data             %3d\n", (UINT32) sizeof (ACPI_OBJECT_DATA));
>  
>          AcpiOsPrintf ("\n");
>  
> -        AcpiOsPrintf ("ParseObject      %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
> -        AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
> -        AcpiOsPrintf ("ParseObjectAsl   %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
> -        AcpiOsPrintf ("OperandObject    %3d\n", sizeof (ACPI_OPERAND_OBJECT));
> -        AcpiOsPrintf ("NamespaceNode    %3d\n", sizeof (ACPI_NAMESPACE_NODE));
> -        AcpiOsPrintf ("AcpiObject       %3d\n", sizeof (ACPI_OBJECT));
> +        AcpiOsPrintf ("ParseObject      %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_COMMON));
> +        AcpiOsPrintf ("ParseObjectNamed %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_NAMED));
> +        AcpiOsPrintf ("ParseObjectAsl   %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_ASL));
> +        AcpiOsPrintf ("OperandObject    %3d\n", (UINT32) sizeof (ACPI_OPERAND_OBJECT));
> +        AcpiOsPrintf ("NamespaceNode    %3d\n", (UINT32) sizeof (ACPI_NAMESPACE_NODE));
> +        AcpiOsPrintf ("AcpiObject       %3d\n", (UINT32) sizeof (ACPI_OBJECT));
>  
>          AcpiOsPrintf ("\n");
>  
> -        AcpiOsPrintf ("Generic State    %3d\n", sizeof (ACPI_GENERIC_STATE));
> -        AcpiOsPrintf ("Common State     %3d\n", sizeof (ACPI_COMMON_STATE));
> -        AcpiOsPrintf ("Control State    %3d\n", sizeof (ACPI_CONTROL_STATE));
> -        AcpiOsPrintf ("Update State     %3d\n", sizeof (ACPI_UPDATE_STATE));
> -        AcpiOsPrintf ("Scope State      %3d\n", sizeof (ACPI_SCOPE_STATE));
> -        AcpiOsPrintf ("Parse Scope      %3d\n", sizeof (ACPI_PSCOPE_STATE));
> -        AcpiOsPrintf ("Package State    %3d\n", sizeof (ACPI_PKG_STATE));
> -        AcpiOsPrintf ("Thread State     %3d\n", sizeof (ACPI_THREAD_STATE));
> -        AcpiOsPrintf ("Result Values    %3d\n", sizeof (ACPI_RESULT_VALUES));
> -        AcpiOsPrintf ("Notify Info      %3d\n", sizeof (ACPI_NOTIFY_INFO));
> +        AcpiOsPrintf ("Generic State    %3d\n", (UINT32) sizeof (ACPI_GENERIC_STATE));
> +        AcpiOsPrintf ("Common State     %3d\n", (UINT32) sizeof (ACPI_COMMON_STATE));
> +        AcpiOsPrintf ("Control State    %3d\n", (UINT32) sizeof (ACPI_CONTROL_STATE));
> +        AcpiOsPrintf ("Update State     %3d\n", (UINT32) sizeof (ACPI_UPDATE_STATE));
> +        AcpiOsPrintf ("Scope State      %3d\n", (UINT32) sizeof (ACPI_SCOPE_STATE));
> +        AcpiOsPrintf ("Parse Scope      %3d\n", (UINT32) sizeof (ACPI_PSCOPE_STATE));
> +        AcpiOsPrintf ("Package State    %3d\n", (UINT32) sizeof (ACPI_PKG_STATE));
> +        AcpiOsPrintf ("Thread State     %3d\n", (UINT32) sizeof (ACPI_THREAD_STATE));
> +        AcpiOsPrintf ("Result Values    %3d\n", (UINT32) sizeof (ACPI_RESULT_VALUES));
> +        AcpiOsPrintf ("Notify Info      %3d\n", (UINT32) sizeof (ACPI_NOTIFY_INFO));
>          break;
>  
>      case CMD_STAT_STACK:
> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
> index a7ee84c9..50b17c00 100644
> --- a/src/acpica/source/components/events/evgpe.c
> +++ b/src/acpica/source/components/events/evgpe.c
> @@ -848,6 +848,15 @@ AcpiEvDetectGpe (
>  
>      Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
>  
> +    if (!GpeEventInfo)
> +    {
> +        GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber);
> +        if (!GpeEventInfo)
> +        {
> +            goto ErrorExit;
> +        }
> +    }
> +
>      /* Get the info block for the entire GPE register */
>  
>      GpeRegisterInfo = GpeEventInfo->RegisterInfo;
> diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
> index 1dc0fe1d..e1481fdf 100644
> --- a/src/acpica/source/components/events/evxfgpe.c
> +++ b/src/acpica/source/components/events/evxfgpe.c
> @@ -875,6 +875,33 @@ UnlockAndExit:
>  ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
>  
>  
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDispatchGpe
> + *
> + * PARAMETERS:  GpeDevice           - Parent GPE Device. NULL for GPE0/GPE1
> + *              GpeNumber           - GPE level within the GPE block
> + *
> + * RETURN:      INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
> + *
> + * DESCRIPTION: Detect and dispatch a General Purpose Event to either a function
> + *              (e.g. EC) or method (e.g. _Lxx/_Exx) handler.
> + *
> + ******************************************************************************/
> +
> +UINT32
> +AcpiDispatchGpe(
> +    ACPI_HANDLE             GpeDevice,
> +    UINT32                  GpeNumber)
> +{
> +    ACPI_FUNCTION_TRACE(acpi_dispatch_gpe);
> +
> +    return (AcpiEvDetectGpe (GpeDevice, NULL, GpeNumber));
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiDispatchGpe)
> +
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    AcpiFinishGpe
> diff --git a/src/acpica/source/components/executer/exconfig.c b/src/acpica/source/components/executer/exconfig.c
> index eba1a6d2..1e3576ca 100644
> --- a/src/acpica/source/components/executer/exconfig.c
> +++ b/src/acpica/source/components/executer/exconfig.c
> @@ -344,7 +344,9 @@ AcpiExLoadTableOp (
>  
>      /* Complete the initialization/resolution of new objects */
>  
> -    AcpiNsInitializeObjects ();
> +    AcpiExExitInterpreter();
> +    AcpiNsInitializeObjects();
> +    AcpiExEnterInterpreter();
>  
>      /* Parameter Data (optional) */
>  
> diff --git a/src/acpica/source/components/executer/exdump.c b/src/acpica/source/components/executer/exdump.c
> index fa70b410..b6b70e67 100644
> --- a/src/acpica/source/components/executer/exdump.c
> +++ b/src/acpica/source/components/executer/exdump.c
> @@ -255,7 +255,7 @@ static ACPI_EXDUMP_INFO     AcpiExDumpMethod[9] =
>      {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ParamCount),            "Parameter Count"},
>      {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.SyncLevel),             "Sync Level"},
>      {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.Mutex),                 "Mutex"},
> -    {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
> +    {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
>      {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ThreadCount),           "Thread Count"},
>      {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Method.AmlLength),             "Aml Length"},
>      {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.AmlStart),              "Aml Start"}
> @@ -422,8 +422,8 @@ static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
>  static ACPI_EXDUMP_INFO     AcpiExDumpNode[7] =
>  {
>      {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
> -    {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
> -    {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
> +    {ACPI_EXD_UINT16,   ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
> +    {ACPI_EXD_UINT16,   ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
>      {ACPI_EXD_LIST,     ACPI_EXD_NSOFFSET (Object),                     "Object List"},
>      {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Parent),                     "Parent"},
>      {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Child),                      "Child"},
> diff --git a/src/acpica/source/components/namespace/nsaccess.c b/src/acpica/source/components/namespace/nsaccess.c
> index 4be555c0..a4db29ee 100644
> --- a/src/acpica/source/components/namespace/nsaccess.c
> +++ b/src/acpica/source/components/namespace/nsaccess.c
> @@ -767,7 +767,7 @@ AcpiNsLookup (
>                  if (Flags & ACPI_NS_PREFIX_MUST_EXIST)
>                  {
>                      AcpiOsPrintf (ACPI_MSG_BIOS_ERROR
> -                        "Object does not exist: %4.4s\n", &SimpleName);
> +                        "Object does not exist: %4.4s\n", (char *) &SimpleName);
>                  }
>  #endif
>                  /* Name not found in ACPI namespace */
> diff --git a/src/acpica/source/components/namespace/nsalloc.c b/src/acpica/source/components/namespace/nsalloc.c
> index 12772308..15fa2766 100644
> --- a/src/acpica/source/components/namespace/nsalloc.c
> +++ b/src/acpica/source/components/namespace/nsalloc.c
> @@ -423,7 +423,7 @@ AcpiNsInstallNode (
>      Node->Type = (UINT8) Type;
>  
>      ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
> -        "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n",
> +        "%4.4s (%s) [Node %p Owner %3.3X] added to %4.4s (%s) [Node %p]\n",
>          AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId,
>          AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type),
>          ParentNode));
> diff --git a/src/acpica/source/components/namespace/nsdump.c b/src/acpica/source/components/namespace/nsdump.c
> index 6ea04525..8a2a7e92 100644
> --- a/src/acpica/source/components/namespace/nsdump.c
> +++ b/src/acpica/source/components/namespace/nsdump.c
> @@ -381,7 +381,7 @@ AcpiNsDumpOneObject (
>  
>      /* Now we can print out the pertinent information */
>  
> -    AcpiOsPrintf (" %-12s %p %2.2X ",
> +    AcpiOsPrintf (" %-12s %p %3.3X ",
>          AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId);
>  
>      DbgLevel = AcpiDbgLevel;
> diff --git a/src/acpica/source/components/namespace/nsrepair2.c b/src/acpica/source/components/namespace/nsrepair2.c
> index a0b10747..302faade 100644
> --- a/src/acpica/source/components/namespace/nsrepair2.c
> +++ b/src/acpica/source/components/namespace/nsrepair2.c
> @@ -289,7 +289,7 @@ static const ACPI_REPAIR_INFO       AcpiNsRepairableNames[] =
>  
>  #define ACPI_FDE_FIELD_COUNT        5
>  #define ACPI_FDE_BYTE_BUFFER_SIZE   5
> -#define ACPI_FDE_DWORD_BUFFER_SIZE  (ACPI_FDE_FIELD_COUNT * sizeof (UINT32))
> +#define ACPI_FDE_DWORD_BUFFER_SIZE  (ACPI_FDE_FIELD_COUNT * (UINT32) sizeof (UINT32))
>  
>  
>  /******************************************************************************
> diff --git a/src/acpica/source/components/tables/tbdata.c b/src/acpica/source/components/tables/tbdata.c
> index ba0c9108..84dd25bd 100644
> --- a/src/acpica/source/components/tables/tbdata.c
> +++ b/src/acpica/source/components/tables/tbdata.c
> @@ -973,6 +973,7 @@ AcpiTbDeleteNamespaceByOwner (
>      {
>          return_ACPI_STATUS (Status);
>      }
> +
>      AcpiNsDeleteNamespaceByOwner (OwnerId);
>      AcpiUtReleaseWriteLock (&AcpiGbl_NamespaceRwLock);
>      return_ACPI_STATUS (Status);
> diff --git a/src/acpica/source/components/utilities/utdebug.c b/src/acpica/source/components/utilities/utdebug.c
> index 5049f6bf..f00b91ad 100644
> --- a/src/acpica/source/components/utilities/utdebug.c
> +++ b/src/acpica/source/components/utilities/utdebug.c
> @@ -322,7 +322,7 @@ AcpiDebugPrint (
>       * Display the module name, current line number, thread ID (if requested),
>       * current procedure nesting level, and the current procedure name
>       */
> -    AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber);
> +    AcpiOsPrintf ("%9s-%04d ", ModuleName, LineNumber);
>  
>  #ifdef ACPI_APPLICATION
>      /*
> @@ -343,7 +343,7 @@ AcpiDebugPrint (
>          FillCount = 0;
>      }
>  
> -    AcpiOsPrintf ("[%02ld] %*s",
> +    AcpiOsPrintf ("[%02d] %*s",
>          AcpiGbl_NestingLevel, AcpiGbl_NestingLevel + 1, " ");
>      AcpiOsPrintf ("%s%*s: ",
>          AcpiUtTrimFunctionName (FunctionName), FillCount, " ");
> diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
> index 624c034c..8fcc4c23 100644
> --- a/src/acpica/source/components/utilities/uterror.c
> +++ b/src/acpica/source/components/utilities/uterror.c
> @@ -188,7 +188,7 @@ AcpiUtPredefinedWarning (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...)
>  {
> @@ -237,7 +237,7 @@ AcpiUtPredefinedInfo (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...)
>  {
> @@ -286,7 +286,7 @@ AcpiUtPredefinedBiosError (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...)
>  {
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index 1413b979..51ccc8bf 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -212,13 +212,14 @@ static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
>      {"Windows 2006 SP2",    NULL, 0, ACPI_OSI_WIN_VISTA_SP2},    /* Windows Vista SP2 - Added 09/2010 */
>      {"Windows 2009",        NULL, 0, ACPI_OSI_WIN_7},            /* Windows 7 and Server 2008 R2 - Added 09/2009 */
>      {"Windows 2012",        NULL, 0, ACPI_OSI_WIN_8},            /* Windows 8 and Server 2012 - Added 08/2012 */
> -    {"Windows 2013",        NULL, 0, ACPI_OSI_WIN_8},            /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
> +    {"Windows 2013",        NULL, 0, ACPI_OSI_WIN_8_1},          /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
>      {"Windows 2015",        NULL, 0, ACPI_OSI_WIN_10},           /* Windows 10 - Added 03/2015 */
>      {"Windows 2016",        NULL, 0, ACPI_OSI_WIN_10_RS1},       /* Windows 10 version 1607 - Added 12/2017 */
>      {"Windows 2017",        NULL, 0, ACPI_OSI_WIN_10_RS2},       /* Windows 10 version 1703 - Added 12/2017 */
>      {"Windows 2017.2",      NULL, 0, ACPI_OSI_WIN_10_RS3},       /* Windows 10 version 1709 - Added 02/2018 */
>      {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 version 1803 - Added 11/2018 */
>      {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
> +    {"Windows 2019",        NULL, 0, ACPI_OSI_WIN_10_19H1},      /* Windows 10 version 1903 - Added 08/2019 */
>  
>      /* Feature Group Strings */
>  
> diff --git a/src/acpica/source/components/utilities/utownerid.c b/src/acpica/source/components/utilities/utownerid.c
> index 64a11389..ade51c8a 100644
> --- a/src/acpica/source/components/utilities/utownerid.c
> +++ b/src/acpica/source/components/utilities/utownerid.c
> @@ -190,7 +190,7 @@ AcpiUtAllocateOwnerId (
>      if (*OwnerId)
>      {
>          ACPI_ERROR ((AE_INFO,
> -            "Owner ID [0x%2.2X] already exists", *OwnerId));
> +            "Owner ID [0x%3.3X] already exists", *OwnerId));
>          return_ACPI_STATUS (AE_ALREADY_EXISTS);
>      }
>  
> @@ -246,13 +246,13 @@ AcpiUtAllocateOwnerId (
>                  /*
>                   * Construct encoded ID from the index and bit position
>                   *
> -                 * Note: Last [j].k (bit 255) is never used and is marked
> +                 * Note: Last [j].k (bit 4095) is never used and is marked
>                   * permanently allocated (prevents +1 overflow)
>                   */
>                  *OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j));
>  
>                  ACPI_DEBUG_PRINT ((ACPI_DB_VALUES,
> -                    "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId));
> +                    "Allocated OwnerId: 0x%3.3X\n", (unsigned int) *OwnerId));
>                  goto Exit;
>              }
>          }
> @@ -272,7 +272,7 @@ AcpiUtAllocateOwnerId (
>       */
>      Status = AE_OWNER_ID_LIMIT;
>      ACPI_ERROR ((AE_INFO,
> -        "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT"));
> +        "Could not allocate new OwnerId (4095 max), AE_OWNER_ID_LIMIT"));
>  
>  Exit:
>      (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> @@ -315,7 +315,7 @@ AcpiUtReleaseOwnerId (
>  
>      if (OwnerId == 0)
>      {
> -        ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%2.2X", OwnerId));
> +        ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%3.3X", OwnerId));
>          return_VOID;
>      }
>  
> @@ -345,7 +345,7 @@ AcpiUtReleaseOwnerId (
>      else
>      {
>          ACPI_ERROR ((AE_INFO,
> -            "Release of non-allocated OwnerId: 0x%2.2X", OwnerId + 1));
> +            "Attempted release of non-allocated OwnerId: 0x%3.3X", OwnerId + 1));
>      }
>  
>      (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index e93cfe1e..50bfe0b9 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -239,9 +239,9 @@
>  
>  #define ACPI_DEFAULT_PAGE_SIZE          4096    /* Must be power of 2 */
>  
> -/* OwnerId tracking. 8 entries allows for 255 OwnerIds */
> +/* OwnerId tracking. 128 entries allows for 4095 OwnerIds */
>  
> -#define ACPI_NUM_OWNERID_MASKS          8
> +#define ACPI_NUM_OWNERID_MASKS          128
>  
>  /* Size of the root table array is increased by this increment */
>  
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index e1ed0053..c3703c15 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -295,12 +295,12 @@ typedef struct acpi_namespace_node
>      union acpi_operand_object       *Object;        /* Interpreter object */
>      UINT8                           DescriptorType; /* Differentiate object descriptor types */
>      UINT8                           Type;           /* ACPI Type associated with this name */
> -    UINT8                           Flags;          /* Miscellaneous flags */
> -    ACPI_OWNER_ID                   OwnerId;        /* Node creator */
> +    UINT16                          Flags;          /* Miscellaneous flags */
>      ACPI_NAME_UNION                 Name;           /* ACPI Name, always 4 chars per ACPI spec */
>      struct acpi_namespace_node      *Parent;        /* Parent node */
>      struct acpi_namespace_node      *Child;         /* First child */
>      struct acpi_namespace_node      *Peer;          /* First peer */
> +    ACPI_OWNER_ID                   OwnerId;        /* Node creator */
>  
>      /*
>       * The following fields are used by the ASL compiler and disassembler only
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index b9b30200..74feb8d9 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -333,8 +333,8 @@ typedef struct acpi_object_method
>      } Dispatch;
>  
>      UINT32                          AmlLength;
> -    UINT8                           ThreadCount;
>      ACPI_OWNER_ID                   OwnerId;
> +    UINT8                           ThreadCount;
>  
>  } ACPI_OBJECT_METHOD;
>  
> diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
> index 19eef638..dfcd008f 100644
> --- a/src/acpica/source/include/acpiosxf.h
> +++ b/src/acpica/source/include/acpiosxf.h
> @@ -577,6 +577,7 @@ AcpiOsEnterSleep (
>   * Debug print routines
>   */
>  #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
> +ACPI_PRINTF_LIKE (1)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiOsPrintf (
>      const char              *Format,
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 2893bf23..a123eed7 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>  
>  /* Current ACPICA subsystem version in YYYYMMDD format */
>  
> -#define ACPI_CA_VERSION                 0x20190703
> +#define ACPI_CA_VERSION                 0x20190816
>  
>  #include "acconfig.h"
>  #include "actypes.h"
> @@ -446,6 +446,9 @@ ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
>  #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
>      ACPI_EXTERNAL_RETURN_OK(Prototype)
>  
> +#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
> +    ACPI_EXTERNAL_RETURN_UINT32(prototype)
> +
>  #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
>      ACPI_EXTERNAL_RETURN_VOID(Prototype)
>  
> @@ -456,6 +459,9 @@ ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
>  #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
>      static ACPI_INLINE Prototype {return(AE_OK);}
>  
> +#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
> +    static ACPI_INLINE prototype {return(0);}
> +
>  #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
>      static ACPI_INLINE Prototype {return;}
>  
> @@ -1076,6 +1082,12 @@ AcpiGetGpeStatus (
>      UINT32                  GpeNumber,
>      ACPI_EVENT_STATUS       *EventStatus))
>  
> +ACPI_HW_DEPENDENT_RETURN_UINT32 (
> +UINT32
> +AcpiDispatchGpe (
> +    ACPI_HANDLE             GpeDevice,
> +    UINT32                  GpeNumber))
> +
>  ACPI_HW_DEPENDENT_RETURN_STATUS (
>  ACPI_STATUS
>  AcpiDisableAllGpes (
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index a0b63ec4..f81c8a7d 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -327,9 +327,9 @@ typedef struct acpi_evaluate_info
>      UINT32                          ReturnFlags;        /* Used for return value analysis */
>      UINT32                          ReturnBtype;        /* Bitmapped type of the returned object */
>      UINT16                          ParamCount;         /* Count of the input argument list */
> +    UINT16                          NodeFlags;          /* Same as Node->Flags */
>      UINT8                           PassNumber;         /* Parser pass number */
>      UINT8                           ReturnObjectType;   /* Object type of the returned object */
> -    UINT8                           NodeFlags;          /* Same as Node->Flags */
>      UINT8                           Flags;              /* General flags */
>  
>  } ACPI_EVALUATE_INFO;
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index e7a2d578..0521f335 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -591,8 +591,8 @@ typedef void *                          ACPI_HANDLE;    /* Actually a ptr to a N
>  
>  /* Owner IDs are used to track namespace nodes for selective deletion */
>  
> -typedef UINT8                           ACPI_OWNER_ID;
> -#define ACPI_OWNER_ID_MAX               0xFF
> +typedef UINT16                          ACPI_OWNER_ID;
> +#define ACPI_OWNER_ID_MAX               0xFFF   /* 4095 possible owner IDs */
>  
>  
>  #define ACPI_INTEGER_BIT_SIZE           64
> @@ -657,7 +657,7 @@ typedef UINT64                          ACPI_INTEGER;
>  
>  /* Pointer/Integer type conversions */
>  
> -#define ACPI_TO_POINTER(i)              ACPI_ADD_PTR (void, (void *) 0, (ACPI_SIZE) (i))
> +#define ACPI_TO_POINTER(i)              ACPI_CAST_PTR (void, (ACPI_SIZE) (i))
>  #define ACPI_TO_INTEGER(p)              ACPI_PTR_DIFF (p, (void *) 0)
>  #define ACPI_OFFSET(d, f)               ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0)
>  #define ACPI_PHYSADDR_TO_PTR(i)         ACPI_TO_POINTER(i)
> @@ -1513,12 +1513,14 @@ typedef enum
>  #define ACPI_OSI_WIN_VISTA_SP2          0x0A
>  #define ACPI_OSI_WIN_7                  0x0B
>  #define ACPI_OSI_WIN_8                  0x0C
> -#define ACPI_OSI_WIN_10                 0x0D
> -#define ACPI_OSI_WIN_10_RS1             0x0E
> -#define ACPI_OSI_WIN_10_RS2             0x0F
> -#define ACPI_OSI_WIN_10_RS3             0x10
> -#define ACPI_OSI_WIN_10_RS4             0x11
> -#define ACPI_OSI_WIN_10_RS5             0x12
> +#define ACPI_OSI_WIN_8_1                0x0D
> +#define ACPI_OSI_WIN_10                 0x0E
> +#define ACPI_OSI_WIN_10_RS1             0x0F
> +#define ACPI_OSI_WIN_10_RS2             0x10
> +#define ACPI_OSI_WIN_10_RS3             0x11
> +#define ACPI_OSI_WIN_10_RS4             0x12
> +#define ACPI_OSI_WIN_10_RS5             0x13
> +#define ACPI_OSI_WIN_10_19H1            0x14
>  
>  
>  /* Definitions of getopt */
> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
> index 8f48d370..0c2327d2 100644
> --- a/src/acpica/source/include/acutils.h
> +++ b/src/acpica/source/include/acutils.h
> @@ -1194,30 +1194,33 @@ AcpiUtDeleteAddressLists (
>  /*
>   * utxferror - various error/warning output functions
>   */
> +ACPI_PRINTF_LIKE(5)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiUtPredefinedWarning (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...);
>  
> +ACPI_PRINTF_LIKE(5)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiUtPredefinedInfo (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...);
>  
> +ACPI_PRINTF_LIKE(5)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiUtPredefinedBiosError (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...);
>  
> diff --git a/src/libfwtsiasl/Makefile.am b/src/libfwtsiasl/Makefile.am
> index 4daa4fe6..9aa5523c 100644
> --- a/src/libfwtsiasl/Makefile.am
> +++ b/src/libfwtsiasl/Makefile.am
> @@ -64,6 +64,13 @@ $(srcdir)/aslcompiler.c $(srcdir)/aslcompiler.y.h: $(srcdir)/aslcompiler.y
>  	mv aslcompiler.tab.c aslcompiler.c
>  	mv aslcompiler.tab.h aslcompiler.y.h
>  
> +.NOTPARALLEL: $(srcdir)/dtcompilerparserlex.c
> +$(srcdir)/dtcompilerparserlex.c $(srcdir)/dtcompilerparser.c $(srcdir)/dtcompilerparser.y.h: ../acpica/source/compiler/dtcompilerparser.l ../acpica/source/compiler/dtcompilerparser.y
> +	${LEX} ${AM_LFLAGS} -PDtCompilerParser -o$(srcdir)/dtcompilerparserlex.c $<
> +	${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser ../acpica/source/compiler/dtcompilerparser.y
> +	mv dtcompilerparser.tab.c dtcompilerparser.c
> +	mv dtcompilerparser.tab.h dtcompilerparser.y.h
> +
>  .NOTPARALLEL: $(srcdir)/dtparserlex.c
>  $(srcdir)/dtparserlex.c $(srcdir)/dtparser.c $(srcdir)/dtparser.y.h: ../acpica/source/compiler/dtparser.l ../acpica/source/compiler/dtparser.y
>  	${LEX} ${AM_LFLAGS} -PDtParser -o$(srcdir)/dtparserlex.c $<
> @@ -84,6 +91,9 @@ BUILT_SOURCES = aslcompiler.y		\
>  		aslcompiler.y.h		\
>  		aslcompilerlex.c	\
>  		aslcompiler.c		\
> +		dtcompilerparser.y.h	\
> +		dtcompilerparserlex.c 	\
> +		dtcompilerparser.c	\
>  		dtparser.y.h		\
>  		dtparserlex.c 		\
>  		dtparser.c 		\
> @@ -103,6 +113,8 @@ libfwtsiasl_la_SOURCES = 					\
>  	fwts_iasl_interface.c 					\
>  	aslcompilerlex.c					\
>  	aslcompiler.c						\
> +	dtcompilerparserlex.c					\
> +	dtcompilerparser.c					\
>  	dtparserlex.c						\
>  	dtparser.c						\
>  	prparserlex.c						\
> 


Acked-by: Alex Hung <alex.hung@canonical.com>
ivanhu Aug. 19, 2019, 10:48 a.m. UTC | #2
On 8/17/19 1:41 AM, Colin King wrote:
> From: Colin Ian King <colin.king@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/2019-August/001949.html
>
> Also changed the fwtsiasl makefile to build new dtcompilerparser
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpica/source/common/adwalk.c             |  21 +-
>  src/acpica/source/common/dmrestag.c           |   6 +-
>  src/acpica/source/common/dmtables.c           |   4 +-
>  src/acpica/source/common/dmtbdump2.c          |   2 +-
>  src/acpica/source/compiler/aslcache.c         |   6 +-
>  src/acpica/source/compiler/aslcodegen.c       |   4 +-
>  src/acpica/source/compiler/aslcompile.c       |  29 +-
>  src/acpica/source/compiler/aslcompiler.h      |  18 +-
>  src/acpica/source/compiler/asldebug.c         |   2 +-
>  src/acpica/source/compiler/asldefine.h        |   2 +-
>  src/acpica/source/compiler/aslglobal.h        |   2 +-
>  src/acpica/source/compiler/aslhelp.c          |   1 +
>  src/acpica/source/compiler/asllength.c        |   9 +-
>  src/acpica/source/compiler/asllistsup.c       |   2 +-
>  src/acpica/source/compiler/aslload.c          |  11 +-
>  src/acpica/source/compiler/aslmain.c          |  30 +-
>  src/acpica/source/compiler/aslmessages.c      |   4 +-
>  src/acpica/source/compiler/aslmessages.h      |   2 +
>  src/acpica/source/compiler/aslnamesp.c        |   9 +-
>  src/acpica/source/compiler/asloptions.c       |   5 +
>  src/acpica/source/compiler/aslparseop.c       |  18 +-
>  src/acpica/source/compiler/aslstartup.c       |   1 +
>  src/acpica/source/compiler/asltransform.c     |   6 +
>  src/acpica/source/compiler/asltypes.h         |   3 +
>  src/acpica/source/compiler/aslutils.c         | 177 ++++++++---
>  src/acpica/source/compiler/aslxrefout.c       |   2 +-
>  src/acpica/source/compiler/dtcompile.c        |  84 +++--
>  src/acpica/source/compiler/dtcompiler.h       |  27 +-
>  src/acpica/source/compiler/dtcompilerparser.l | 288 ++++++++++++++++++
>  src/acpica/source/compiler/dtcompilerparser.y | 287 +++++++++++++++++
>  src/acpica/source/compiler/dtfield.c          |   4 +-
>  src/acpica/source/compiler/dtio.c             |  59 +++-
>  src/acpica/source/compiler/dtparser.l         |   2 -
>  src/acpica/source/compiler/dttemplate.c       |   2 +-
>  src/acpica/source/compiler/prmacros.c         |   2 +-
>  src/acpica/source/compiler/prscan.c           |   6 +-
>  .../source/components/debugger/dbhistry.c     |   2 +-
>  .../source/components/debugger/dbinput.c      |  10 +-
>  .../source/components/debugger/dbmethod.c     |   5 +
>  .../source/components/debugger/dbstats.c      |  92 +++---
>  src/acpica/source/components/events/evgpe.c   |   9 +
>  src/acpica/source/components/events/evxfgpe.c |  27 ++
>  .../source/components/executer/exconfig.c     |   4 +-
>  .../source/components/executer/exdump.c       |   6 +-
>  .../source/components/namespace/nsaccess.c    |   2 +-
>  .../source/components/namespace/nsalloc.c     |   2 +-
>  .../source/components/namespace/nsdump.c      |   2 +-
>  .../source/components/namespace/nsrepair2.c   |   2 +-
>  src/acpica/source/components/tables/tbdata.c  |   1 +
>  .../source/components/utilities/utdebug.c     |   4 +-
>  .../source/components/utilities/uterror.c     |   6 +-
>  .../source/components/utilities/utosi.c       |   3 +-
>  .../source/components/utilities/utownerid.c   |  12 +-
>  src/acpica/source/include/acconfig.h          |   4 +-
>  src/acpica/source/include/aclocal.h           |   4 +-
>  src/acpica/source/include/acobject.h          |   2 +-
>  src/acpica/source/include/acpiosxf.h          |   1 +
>  src/acpica/source/include/acpixf.h            |  14 +-
>  src/acpica/source/include/acstruct.h          |   2 +-
>  src/acpica/source/include/actypes.h           |  20 +-
>  src/acpica/source/include/acutils.h           |   9 +-
>  src/libfwtsiasl/Makefile.am                   |  12 +
>  62 files changed, 1157 insertions(+), 237 deletions(-)
>  create mode 100644 src/acpica/source/compiler/dtcompilerparser.l
>  create mode 100644 src/acpica/source/compiler/dtcompilerparser.y
>
> diff --git a/src/acpica/source/common/adwalk.c b/src/acpica/source/common/adwalk.c
> index d9bd4d9e..6da2e8ec 100644
> --- a/src/acpica/source/common/adwalk.c
> +++ b/src/acpica/source/common/adwalk.c
> @@ -480,6 +480,7 @@ AcpiDmDumpDescending (
>  {
>      ACPI_OP_WALK_INFO       *Info = Context;
>      char                    *Path;
> +    ACPI_STATUS             Status;
>  
>  
>      if (!Op)
> @@ -522,10 +523,18 @@ AcpiDmDumpDescending (
>  
>          if (Op->Common.Value.String)
>          {
> -            AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
> +            Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
>                  NULL, &Path);
> -            AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
> -            ACPI_FREE (Path);
> +            if (ACPI_SUCCESS (Status))
> +            {
> +                AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
> +                ACPI_FREE (Path);
> +            }
> +            else
> +            {
> +                AcpiOsPrintf ("Could not externalize pathname for node [%4.4s]",
> +                    Op->Common.Node->Name.Ascii);
> +            }
>          }
>          else
>          {
> @@ -830,9 +839,9 @@ AcpiDmLoadDescendingOp (
>           * 2) Not the root node
>           * 3) Not a node created by Scope
>           */
> -
> -        if (!PreDefined && Node != AcpiGbl_RootNode &&
> -            Op->Common.AmlOpcode != AML_SCOPE_OP)
> +        if (!PreDefined &&
> +            (Node != AcpiGbl_RootNode) &&
> +            (Op->Common.AmlOpcode != AML_SCOPE_OP))
>          {
>              Node->OwnerId = WalkState->OwnerId;
>          }
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index 8ab92d71..072409f7 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -833,8 +833,12 @@ AcpiGetTagPathname (
>  
>      /* Internalize the namepath to AML format */
>  
> -    AcpiNsInternalizeName (Pathname, &InternalPath);
> +    Status = AcpiNsInternalizeName (Pathname, &InternalPath);
>      ACPI_FREE (Pathname);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return (NULL);
> +    }
>  
>      /* Update the Op with the symbol */
>  
> diff --git a/src/acpica/source/common/dmtables.c b/src/acpica/source/common/dmtables.c
> index f9579509..a2dbea62 100644
> --- a/src/acpica/source/common/dmtables.c
> +++ b/src/acpica/source/common/dmtables.c
> @@ -443,8 +443,8 @@ AdGetLocalTables (
>      /* Get the DSDT via table override */
>  
>      ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
> -    AcpiOsTableOverride (&TableHeader, &NewTable);
> -    if (!NewTable)
> +    Status = AcpiOsTableOverride (&TableHeader, &NewTable);
> +    if (ACPI_FAILURE (Status) || !NewTable)
>      {
>          fprintf (stderr, "Could not obtain DSDT\n");
>          return (AE_NO_ACPI_TABLES);
> diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c
> index a2d09b31..418b6ec0 100644
> --- a/src/acpica/source/common/dmtbdump2.c
> +++ b/src/acpica/source/common/dmtbdump2.c
> @@ -871,7 +871,7 @@ AcpiDmDumpMcfg (
>          if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
>          {
>              AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
> -                sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
> +                (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
>              return;
>          }
>  
> diff --git a/src/acpica/source/compiler/aslcache.c b/src/acpica/source/compiler/aslcache.c
> index f8e7c658..132497b5 100644
> --- a/src/acpica/source/compiler/aslcache.c
> +++ b/src/acpica/source/compiler/aslcache.c
> @@ -421,7 +421,7 @@ UtDeleteLocalCaches (
>      DbgPrint (ASL_DEBUG_OUTPUT,
>          "%u ParseOps, Buffer size: %u ops (%u bytes), %u Buffers\n",
>          AslGbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE,
> -        (sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
> +        ((UINT32) sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
>  
>      /* Reset cache globals */
>  
> @@ -445,7 +445,7 @@ UtDeleteLocalCaches (
>      DbgPrint (ASL_DEBUG_OUTPUT,
>          "%u Fields, Buffer size: %u fields (%u bytes), %u Buffers\n",
>          AslGbl_FieldCount, ASL_FIELD_CACHE_SIZE,
> -        (sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
> +        ((UINT32) sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
>  
>      /* Reset cache globals */
>  
> @@ -468,7 +468,7 @@ UtDeleteLocalCaches (
>      DbgPrint (ASL_DEBUG_OUTPUT,
>          "%u Subtables, Buffer size: %u subtables (%u bytes), %u Buffers\n",
>          AslGbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE,
> -        (sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
> +        ((UINT32) sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
>  
>      /* Reset cache globals */
>  
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 54b5ac2c..86f85074 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -618,8 +618,8 @@ CgWriteTableHeader (
>          Op->Asl.AmlSubtreeLength +=
>              strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3;
>  
> -        CvDbgPrint ("     Length: %lu\n",
> -            strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
> +        CvDbgPrint ("     Length: %u\n",
> +            (UINT32) strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
>  
>          if (Op->Asl.CommentList)
>          {
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5f152dc9..9214cfdf 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -853,10 +853,11 @@ CmDumpAllEvents (
>   *
>   ******************************************************************************/
>  
> -void
> +int
>  CmCleanupAndExit (
>      void)
>  {
> +    int                     Status = 0;
>      BOOLEAN                 DeleteAmlFile = FALSE;
>      ASL_GLOBAL_FILE_NODE    *CurrentFileNode = AslGbl_FilesList;
>  
> @@ -915,20 +916,38 @@ CmCleanupAndExit (
>      UtDisplaySummary (ASL_FILE_STDOUT);
>  
>      /*
> -     * We will delete the AML file if there are errors and the
> -     * force AML output option has not been used.
> +     * Delete the AML file if there are errors and the force AML output option
> +     * (-f) has not been used.
> +     *
> +     * Return -1 as a status of the compiler if no AML files are generated. If
> +     * the AML file is generated in the presence of errors, return 0. In the
> +     * latter case, the errors were ignored by the user so the compilation is
> +     * considered successful.
>       */
> -    if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly || ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
> +    if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly ||
> +        ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
>          (!AslGbl_IgnoreErrors) &&
>          AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle))
>      {
>          DeleteAmlFile = TRUE;
> +        Status = -1;
>      }
>  
>      /* Close all open files */
>  
>      while (CurrentFileNode)
>      {
> +        /*
> +         * Set the program return status based on file errors. If there are any
> +         * errors and during compilation, the command is not considered
> +         * successful.
> +         */
> +        if (Status != -1 && !AslGbl_IgnoreErrors &&
> +            CurrentFileNode->ParserErrorDetected)
> +        {
> +            Status = -1;
> +        }
> +
>          switch  (FlSwitchFileSet (CurrentFileNode->Files[ASL_FILE_INPUT].Filename))
>          {
>              case SWITCH_TO_SAME_FILE:
> @@ -952,6 +971,8 @@ CmCleanupAndExit (
>      {
>          UtDeleteLocalCaches ();
>      }
> +
> +    return (Status);
>  }
>  
>  
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 5c4bdc17..01ab3924 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -266,7 +266,7 @@ void
>  CmDoOutputFiles (
>      void);
>  
> -void
> +int
>  CmCleanupAndExit (
>      void);
>  
> @@ -1052,6 +1052,7 @@ void
>  FlCloseFile (
>      UINT32                  FileId);
>  
> +ACPI_PRINTF_LIKE (2)
>  void
>  FlPrintFile (
>      UINT32                  FileId,
> @@ -1195,6 +1196,7 @@ OtXrefWalkPart1 (
>  /*
>   * aslutils - common compiler utilities
>   */
> +ACPI_PRINTF_LIKE(2)
>  void
>  DbgPrint (
>      UINT32                  Type,
> @@ -1288,6 +1290,10 @@ UtInternalizeName (
>      char                    *ExternalName,
>      char                    **ConvertedName);
>  
> +BOOLEAN
> +UtNameContainsAllPrefix (
> +    ACPI_PARSE_OBJECT       *Op);
> +
>  void
>  UtAttachNamepathToOwner (
>      ACPI_PARSE_OBJECT       *Op,
> @@ -1303,6 +1309,15 @@ UINT64
>  UtDoConstant (
>      char                    *String);
>  
> +char *
> +AcpiUtStrdup (
> +    char                    *String);
> +
> +char *
> +AcpiUtStrcat (
> +    char                    *String1,
> +    char                    *String2);
> +
>  
>  /*
>   * asluuid - UUID support
> @@ -1604,6 +1619,7 @@ DtCreateTemplates (
>  /*
>   * ASL/ASL+ converter debug
>   */
> +ACPI_PRINTF_LIKE (1)
>  void
>  CvDbgPrint (
>      char                    *Fmt,
> diff --git a/src/acpica/source/compiler/asldebug.c b/src/acpica/source/compiler/asldebug.c
> index 2c1dab79..469a58e5 100644
> --- a/src/acpica/source/compiler/asldebug.c
> +++ b/src/acpica/source/compiler/asldebug.c
> @@ -239,7 +239,7 @@ UtDumpIntegerOp (
>      case 8: /* Dword */
>  
>          DbgPrint (ASL_TREE_OUTPUT,
> -            "%*.*X", IntegerLength, IntegerLength, Op->Asl.Value.Integer);
> +            "%*.*X", IntegerLength, IntegerLength, (UINT32) Op->Asl.Value.Integer);
>          break;
>  
>      case 16: /* Qword and Integer */
> diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
> index c5111875..0ba08962 100644
> --- a/src/acpica/source/compiler/asldefine.h
> +++ b/src/acpica/source/compiler/asldefine.h
> @@ -290,7 +290,7 @@
>  
>  #define ASL_PARSE_TREE_DEBUG2 \
>      " %08X %04X %04X %01X     %04X  %04X %05X  %05X   "\
> -    "%08X %08X %08X %08X %08X %08X %04X  %02d  %5d %5d %5d %5d"
> +    "%8p %8p %8p %8p %08X %08X %04X  %02d  %5d %5d %5d %5d"
>  
>  /*
>   * Macros for ASL/ASL+ converter
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index 740f7f34..9020c14d 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -244,7 +244,6 @@ extern const char                   *AslGbl_SpecialNamedObjects[MAX_SPECIAL_NAME
>  #endif
>  
>  
> -
>  /*
>   * Parser and other externals
>   */
> @@ -254,6 +253,7 @@ extern int                          DtParserdebug;
>  extern int                          PrParserdebug;
>  extern const ASL_MAPPING_ENTRY      AslKeywordMapping[];
>  extern char                         *AslCompilertext;
> +extern char                         *DtCompilerParsertext;
>  
>  /*
>   * Older versions of Bison won't emit this external in the generated header.
> diff --git a/src/acpica/source/compiler/aslhelp.c b/src/acpica/source/compiler/aslhelp.c
> index f51b07f8..47d9d306 100644
> --- a/src/acpica/source/compiler/aslhelp.c
> +++ b/src/acpica/source/compiler/aslhelp.c
> @@ -247,6 +247,7 @@ Usage (
>      ACPI_OPTION ("",                "  (Original comments are passed through to ASL+ file)");
>  
>      printf ("\nData Table Compiler:\n");
> +    ACPI_OPTION ("-tp",             "Compile tables with flex/bison prototype");
>      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");
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index b9bb3d67..6778bf64 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -479,12 +479,13 @@ CgGenerateAmlLengths (
>          Op->Asl.AmlLength = strlen (Buffer);
>  
>          /*
> -         * Check for single backslash reference to root,
> -         * make it a null terminated string in the AML
> +         * Check for single backslash reference to root or reference to a name
> +         * consisting of only prefix (^) characters. Make it a null terminated
> +         * string in the AML.
>           */
> -        if (Op->Asl.AmlLength == 1)
> +        if (Op->Asl.AmlLength == 1 || UtNameContainsAllPrefix(Op))
>          {
> -            Op->Asl.AmlLength = 2;
> +            Op->Asl.AmlLength++;
>          }
>          break;
>  
> diff --git a/src/acpica/source/compiler/asllistsup.c b/src/acpica/source/compiler/asllistsup.c
> index e54adb52..9663740a 100644
> --- a/src/acpica/source/compiler/asllistsup.c
> +++ b/src/acpica/source/compiler/asllistsup.c
> @@ -241,7 +241,7 @@ LsDumpAsciiInComment (
>              {
>                  /* Insert a space to break the sequence */
>  
> -                FlPrintFile (FileId, ".", BufChar);
> +                FlPrintFile (FileId, " ");
>              }
>  
>              FlPrintFile (FileId, "%c", BufChar);
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 4dd2dfd0..d918c0cc 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -275,7 +275,6 @@ LdLoadFieldElements (
>      ACPI_STATUS             Status;
>  
>  
> -
>      SourceRegion = UtGetArg (Op, 0);
>      if (SourceRegion)
>      {
> @@ -1031,7 +1030,8 @@ FinishNode:
>   * DESCRIPTION: Check if certain named objects are declared in the incorrect
>   *              scope. Special named objects are listed in
>   *              AslGbl_SpecialNamedObjects and can only be declared at the root
> - *              scope.
> + *              scope. _UID inside of a processor declaration must not be a
> + *              string.
>   *
>   ******************************************************************************/
>  
> @@ -1052,6 +1052,13 @@ LdCheckSpecialNames (
>              return;
>          }
>      }
> +
> +    if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, "_UID") &&
> +        Node->Parent->Type == ACPI_TYPE_PROCESSOR &&
> +        Node->Type == ACPI_TYPE_STRING)
> +    {
> +        AslError (ASL_ERROR, ASL_MSG_INVALID_PROCESSOR_UID , Op, "found a string");
> +    }
>  }
>  
>  
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 2afb20f6..605c412f 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -282,7 +282,6 @@ main (
>          if (ACPI_FAILURE (Status))
>          {
>              ReturnStatus = -1;
> -            goto CleanupAndExit;
>          }
>  
>          Index2++;
> @@ -290,9 +289,10 @@ main (
>  
>      /*
>       * At this point, compilation of a data table or disassembly is complete.
> +     * However, if there is a parse tree, perform compiler analysis and
> +     * generate AML.
>       */
> -    if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag ||
> -        AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> +    if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag || !AslGbl_ParseTreeRoot)
>      {
>          goto CleanupAndExit;
>      }
> @@ -338,7 +338,6 @@ main (
>      }
>  
>  
> -
>  CleanupAndExit:
>  
>      UtFreeLineBuffers ();
> @@ -350,7 +349,7 @@ CleanupAndExit:
>  
>      if (!AcpiGbl_DisasmFlag)
>      {
> -        CmCleanupAndExit ();
> +        ReturnStatus = CmCleanupAndExit ();
>      }
>  
>  
> @@ -400,18 +399,21 @@ AslSignalHandler (
>       * Close all open files
>       * Note: the .pre file is the same as the input source file
>       */
> -    AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
> -
> -    for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> +    if (AslGbl_Files)
>      {
> -        FlCloseFile (i);
> -    }
> +        AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
>  
> -    /* Delete any output files */
> +        for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> +        {
> +            FlCloseFile (i);
> +        }
>  
> -    for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
> -    {
> -        FlDeleteFile (i);
> +        /* Delete any output files */
> +
> +        for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
> +        {
> +            FlDeleteFile (i);
> +        }
>      }
>  
>      printf (ASL_PREFIX "Terminating\n");
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index 48c4dbab..8dd989ca 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -366,7 +366,9 @@ const char                      *AslCompilerMsgs [] =
>  /*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed",
>  /*    ASL_MSG_UNDEFINED_EXTERNAL */         "Named object was declared external but the actual definition does not exist",
>  /*    ASL_MSG_BUFFER_FIELD_OVERFLOW */      "Buffer field extends beyond end of target buffer",
> -/*    ASL_MSG_INVALID_SPECIAL_NAME */       "declaration of this named object outside root scope is illegal"
> +/*    ASL_MSG_INVALID_SPECIAL_NAME */       "declaration of this named object outside root scope is illegal",
> +/*    ASL_MSG_INVALID_PROCESSOR_UID */      "_UID inside processor declaration must be an integer",
> +/*    ASL_MSG_LEGACY_PROCESSOR_OP */        "Legacy Processor() keyword detected. Use Device() keyword instead."
>  };
>  
>  /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index d998f0fe..55473fb5 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -369,6 +369,8 @@ typedef enum
>      ASL_MSG_UNDEFINED_EXTERNAL,
>      ASL_MSG_BUFFER_FIELD_OVERFLOW,
>      ASL_MSG_INVALID_SPECIAL_NAME,
> +    ASL_MSG_INVALID_PROCESSOR_UID,
> +    ASL_MSG_LEGACY_PROCESSOR_OP,
>  
>      /* These messages are used by the Data Table compiler only */
>  
> diff --git a/src/acpica/source/compiler/aslnamesp.c b/src/acpica/source/compiler/aslnamesp.c
> index a3c445af..b5af0cb3 100644
> --- a/src/acpica/source/compiler/aslnamesp.c
> +++ b/src/acpica/source/compiler/aslnamesp.c
> @@ -276,7 +276,7 @@ NsDoOneNamespaceObject (
>  
>      FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u  [%u]  %*s %4.4s - %s",
>          AslGbl_NumNamespaceObjects, Level, (Level * 3), " ",
> -        &Node->Name, AcpiUtGetTypeName (Node->Type));
> +        &Node->Name.Ascii[0], AcpiUtGetTypeName (Node->Type));
>  
>      Op = Node->Op;
>      ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object);
> @@ -429,7 +429,7 @@ NsDoOneNamespaceObject (
>              {
>                  FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
>                      "       [Initial Length  0x%.2X elements]",
> -                    Op->Asl.Value.Integer);
> +                    (UINT32) Op->Asl.Value.Integer);
>              }
>              break;
>  
> @@ -452,7 +452,7 @@ NsDoOneNamespaceObject (
>              {
>                  FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
>                      "        [Initial Length  0x%.2X bytes]",
> -                    Op->Asl.Value.Integer);
> +                    (UINT32) Op->Asl.Value.Integer);
>              }
>              break;
>  
> @@ -531,7 +531,8 @@ NsDoOnePathname (
>          return (Status);
>      }
>  
> -    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n", TargetPath.Pointer);
> +    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n",
> +        ACPI_CAST_PTR (char, TargetPath.Pointer));
>      ACPI_FREE (TargetPath.Pointer);
>      return (AE_OK);
>  }
> diff --git a/src/acpica/source/compiler/asloptions.c b/src/acpica/source/compiler/asloptions.c
> index dc00e1d2..7c178149 100644
> --- a/src/acpica/source/compiler/asloptions.c
> +++ b/src/acpica/source/compiler/asloptions.c
> @@ -837,6 +837,11 @@ AslDoOptions (
>              AslGbl_HexOutputFlag = HEX_OUTPUT_C;
>              break;
>  
> +    case 'p': /* data table flex/bison prototype */
> +
> +            AslGbl_DtLexBisonPrototype = TRUE;
> +            break;
> +
>          case 's':
>  
>              AslGbl_HexOutputFlag = HEX_OUTPUT_ASL;
> diff --git a/src/acpica/source/compiler/aslparseop.c b/src/acpica/source/compiler/aslparseop.c
> index 8fa99f3e..59a54864 100644
> --- a/src/acpica/source/compiler/aslparseop.c
> +++ b/src/acpica/source/compiler/aslparseop.c
> @@ -403,22 +403,22 @@ TrCreateValuedLeafOp (
>      {
>      case PARSEOP_STRING_LITERAL:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_NAMESEG:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_NAMESTRING:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_EISAID:
>  
> -        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
> +        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_METHOD:
> @@ -693,7 +693,8 @@ TrCreateConstantLeafOp (
>      time_t                  CurrentTime;
>      char                    *StaticTimeString;
>      char                    *TimeString;
> -    char                    *Filename;
> +    char                    *Filename = NULL;
> +    ACPI_STATUS             Status;
>  
>  
>      switch (ParseOpcode)
> @@ -727,7 +728,12 @@ TrCreateConstantLeafOp (
>  
>          /* Get the simple filename from the full path */
>  
> -        FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
> +        Status = FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (NULL);
> +        }
> +
>          Op->Asl.Value.String = Filename;
>          break;
>  
> diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
> index 472f777c..c43c1a97 100644
> --- a/src/acpica/source/compiler/aslstartup.c
> +++ b/src/acpica/source/compiler/aslstartup.c
> @@ -467,6 +467,7 @@ AslDoOneFile (
>      /* Determine input file type */
>  
>      AslGbl_FileType = AslDetectSourceFileType (&AslGbl_Files[ASL_FILE_INPUT]);
> +    FileNode->FileType = AslGbl_FileType;
>      if (AslGbl_FileType == ASL_INPUT_TYPE_BINARY)
>      {
>          return (AE_ERROR);
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index 5237c638..7dc642d8 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -507,6 +507,12 @@ TrTransformSubtree (
>          }
>          break;
>  
> +    case PARSEOP_PROCESSOR:
> +
> +        AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName);
> +
> +        break;
> +
>      default:
>  
>          /* Nothing to do here for other opcodes */
> diff --git a/src/acpica/source/compiler/asltypes.h b/src/acpica/source/compiler/asltypes.h
> index 8a6a0750..2df31eab 100644
> --- a/src/acpica/source/compiler/asltypes.h
> +++ b/src/acpica/source/compiler/asltypes.h
> @@ -505,9 +505,12 @@ typedef struct asl_files_node
>      UINT32                  TotalLineCount;
>      UINT32                  OriginalInputFileSize;
>      UINT32                  TotalKeywords;
> +    UINT32                  TotalFields;
> +    UINT32                  OutputByteLength;
>      UINT32                  TotalNamedObjects;
>      UINT32                  TotalExecutableOpcodes;
>      BOOLEAN                 ParserErrorDetected;
> +    UINT8                   FileType;
>  
>  } ASL_GLOBAL_FILE_NODE;
>  
> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
> index 80149247..ed2948d0 100644
> --- a/src/acpica/source/compiler/aslutils.c
> +++ b/src/acpica/source/compiler/aslutils.c
> @@ -223,6 +223,7 @@ UtQueryForOverwrite (
>      char                    *Pathname)
>  {
>      struct stat             StatInfo;
> +    int                     InChar = 0x34;
>  
>  
>      if (!stat (Pathname, &StatInfo))
> @@ -230,7 +231,13 @@ UtQueryForOverwrite (
>          fprintf (stderr, "Target file \"%s\" already exists, overwrite? [y|n] ",
>              Pathname);
>  
> -        if (getchar () != 'y')
> +        InChar = fgetc (stdin);
> +        if (InChar == '\n')
> +        {
> +            InChar = fgetc (stdin);
> +        }
> +
> +        if ((InChar != 'y') && (InChar != 'Y'))
>          {
>              return (FALSE);
>          }
> @@ -559,58 +566,54 @@ UtDisplayOneSummary (
>  
>      /* Summary of main input and output files */
>  
> -    if (AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> +    FileNode = FlGetCurrentFileNode ();
> +    if (!FileNode)
> +    {
> +        fprintf (stderr, "Summary could not be generated");
> +        return;
> +    }
> +
> +    if (FileNode->ParserErrorDetected)
> +    {
> +        FlPrintFile (FileId,
> +            "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
> +            "Input file:", AslGbl_Files[ASL_FILE_INPUT].Filename);
> +    }
> +    else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_DATA)
>      {
>          FlPrintFile (FileId,
> -            "%-14s %s - %u lines, %u bytes, %u fields\n",
> +            "%-14s %s - %7u bytes %6u fields %8u source lines\n",
>              "Table Input:",
> -            AslGbl_Files[ASL_FILE_INPUT].Filename, AslGbl_CurrentLineNumber,
> -            AslGbl_InputByteCount, AslGbl_InputFieldCount);
> +            AslGbl_Files[ASL_FILE_INPUT].Filename,
> +            FileNode->OriginalInputFileSize, FileNode->TotalFields,
> +            FileNode->TotalLineCount);
>  
> -        if ((AslGbl_ExceptionCount[ASL_ERROR] == 0) || (AslGbl_IgnoreErrors))
> -        {
> -            FlPrintFile (FileId,
> -                "%-14s %s - %u bytes\n",
> -                "Binary Output:",
> -                AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, AslGbl_TableLength);
> -        }
> +        FlPrintFile (FileId,
> +            "%-14s %s - %7u bytes\n",
> +            "Binary Output:",
> +            AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, FileNode->OutputByteLength);
>      }
> -    else
> +    else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_ASL)
>      {
> -        FileNode = FlGetCurrentFileNode ();
> -        if (!FileNode)
> -        {
> -            fprintf (stderr, "Summary could not be generated");
> -            return;
> -        }
> -        if (FileNode->ParserErrorDetected)
> -        {
> -            FlPrintFile (FileId,
> -                "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
> -                "ASL Input:", AslGbl_Files[ASL_FILE_INPUT].Filename);
> -        }
> -        else
> +        FlPrintFile (FileId,
> +            "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
> +            "ASL Input:",
> +            AslGbl_Files[ASL_FILE_INPUT].Filename,
> +            FileNode->OriginalInputFileSize,
> +            FileNode->TotalKeywords,
> +            FileNode->TotalLineCount);
> +
> +        /* AML summary */
> +
> +        if (DisplayAMLSummary)
>          {
>              FlPrintFile (FileId,
> -                "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
> -                "ASL Input:",
> -                AslGbl_Files[ASL_FILE_INPUT].Filename,
> -                FileNode->OriginalInputFileSize,
> -                FileNode->TotalKeywords,
> -                FileNode->TotalLineCount);
> -
> -            /* AML summary */
> -
> -            if (DisplayAMLSummary)
> -            {
> -                FlPrintFile (FileId,
> -                    "%-14s %s - %7u bytes %6u opcodes  %6u named objects\n",
> -                    "AML Output:",
> -                    AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
> -                    FlGetFileSize (ASL_FILE_AML_OUTPUT),
> -                    FileNode->TotalExecutableOpcodes,
> -                    FileNode->TotalNamedObjects);
> -            }
> +                "%-14s %s - %7u bytes %6u opcodes  %6u named objects\n",
> +                "AML Output:",
> +                AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
> +                FlGetFileSize (ASL_FILE_AML_OUTPUT),
> +                FileNode->TotalExecutableOpcodes,
> +                FileNode->TotalNamedObjects);
>          }
>      }
>  
> @@ -992,6 +995,37 @@ UtAttachNamepathToOwner (
>  }
>  
>  
> +/*******************************************************************************
> + *
> + * FUNCTION:    UtNameContainsAllPrefix
> + *
> + * PARAMETERS:  Op                  - Op containing NameString
> + *
> + * RETURN:      NameString consists of all ^ characters
> + *
> + * DESCRIPTION: Determine if this Op contains a name segment that consists of
> + *              all '^' characters.
> + *
> + ******************************************************************************/
> +
> +BOOLEAN
> +UtNameContainsAllPrefix (
> +    ACPI_PARSE_OBJECT       *Op)
> +{
> +    UINT32                  Length = Op->Asl.AmlLength;
> +    UINT32                  i;
> +
> +    for (i = 0; i < Length; i++)
> +    {
> +        if (Op->Asl.Value.String[i] != '^')
> +        {
> +            return (FALSE);
> +        }
> +    }
> +
> +    return (TRUE);
> +}
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    UtDoConstant
> @@ -1026,3 +1060,56 @@ UtDoConstant (
>  
>      return (ConvertedInteger);
>  }
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION:    AcpiUtStrdup
> + *
> + * PARAMETERS:  String1             - string to duplicate
> + *
> + * RETURN:      int that signifies string relationship. Zero means strings
> + *              are equal.
> + *
> + * DESCRIPTION: Duplicate the string using UtCacheAlloc to avoid manual memory
> + *              reclamation.
> + *
> + ******************************************************************************/
> +
> +char *
> +AcpiUtStrdup (
> +    char                    *String)
> +{
> +    char                    *NewString = (char *) UtLocalCalloc (strlen (String) + 1);
> +
> +
> +    strcpy (NewString, String);
> +    return (NewString);
> +}
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION:    AcpiUtStrcat
> + *
> + * PARAMETERS:  String1
> + *              String2
> + *
> + * RETURN:      New string with String1 concatenated with String2
> + *
> + * DESCRIPTION: Concatenate string1 and string2
> + *
> + ******************************************************************************/
> +
> +char *
> +AcpiUtStrcat (
> +    char                    *String1,
> +    char                    *String2)
> +{
> +    UINT32                  String1Length = strlen (String1);
> +    char                    *NewString = (char *) UtLocalCalloc (strlen (String1) + strlen (String2) + 1);
> +
> +    strcpy (NewString, String1);
> +    strcpy (NewString + String1Length, String2);
> +    return (NewString);
> +}
> diff --git a/src/acpica/source/compiler/aslxrefout.c b/src/acpica/source/compiler/aslxrefout.c
> index 2bd43a07..ce8c8ddd 100644
> --- a/src/acpica/source/compiler/aslxrefout.c
> +++ b/src/acpica/source/compiler/aslxrefout.c
> @@ -799,7 +799,7 @@ OtXrefWalkPart3 (
>      else
>      {
>          FlPrintFile (ASL_FILE_XREF_OUTPUT,
> -            "            %u references to this object in this module\n",
> +            "            %u references to this object in this module [%s]\n",
>              XrefInfo->ThisObjectReferences, ParentPath);
>      }
>  
> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
> index 09cb3e6c..b6a144fe 100644
> --- a/src/acpica/source/compiler/dtcompile.c
> +++ b/src/acpica/source/compiler/dtcompile.c
> @@ -161,7 +161,7 @@ static char                 VersionString[9];
>  
>  /* Local prototypes */
>  
> -static ACPI_STATUS
> +void
>  DtInitialize (
>      void);
>  
> @@ -196,16 +196,12 @@ DtDoCompile (
>      ACPI_STATUS             Status;
>      UINT8                   Event;
>      DT_FIELD                *FieldList;
> +    ASL_GLOBAL_FILE_NODE    *FileNode;
>  
>  
>      /* Initialize globals */
>  
> -    Status = DtInitialize ();
> -    if (ACPI_FAILURE (Status))
> -    {
> -        printf ("Error during compiler initialization, 0x%X\n", Status);
> -        return (Status);
> -    }
> +    DtInitialize ();
>  
>      /* Preprocessor */
>  
> @@ -223,13 +219,29 @@ DtDoCompile (
>          }
>      }
>  
> -    /*
> -     * Scan the input file (file is already open) and
> -     * build the parse tree
> -     */
> -    Event = UtBeginEvent ("Scan and parse input file");
> -    FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
> -    UtEndEvent (Event);
> +    /* Compile the parse tree */
> +
> +    if (AslGbl_DtLexBisonPrototype)
> +    {
> +        Event = UtBeginEvent ("Parse data table in prototype mode");
> +
> +        DtCompilerInitLexer (AslGbl_Files[ASL_FILE_INPUT].Handle);
> +        DtCompilerParserparse ();
> +        FieldList = AslGbl_FieldList;
> +        DtCompilerTerminateLexer ();
> +
> +        UtEndEvent (Event);
> +    }
> +    else
> +    {
> +        /*
> +         * Scan the input file (file is already open) and
> +         * build the parse tree
> +         */
> +        Event = UtBeginEvent ("Scan and parse input file");
> +        FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
> +        UtEndEvent (Event);
> +    }
>  
>      /* Did the parse tree get successfully constructed? */
>  
> @@ -245,14 +257,27 @@ DtDoCompile (
>  
>      Event = UtBeginEvent ("Compile parse tree");
>  
> -    /*
> -     * Compile the parse tree
> -     */
>      Status = DtCompileDataTable (&FieldList);
>      UtEndEvent (Event);
>  
> +    FileNode = FlGetCurrentFileNode ();
> +    if (!FileNode)
> +    {
> +        fprintf (stderr, "Summary for %s could not be generated",
> +            AslGbl_Files[ASL_FILE_INPUT].Filename);
> +    }
> +    else
> +    {
> +        FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
> +        FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
> +        DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
> +                FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
> +    }
> +
>      if (ACPI_FAILURE (Status))
>      {
> +        FileNode->ParserErrorDetected = TRUE;
> +
>          /* TBD: temporary error message. Msgs should come from function above */
>  
>          DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
> @@ -276,6 +301,14 @@ DtDoCompile (
>      HxDoHexOutput ();
>      DtWriteTableToListing ();
>  
> +    /* Save the compile time statistics to the current file node */
> +
> +    if (FileNode)
> +    {
> +        FileNode->TotalFields = AslGbl_InputFieldCount;
> +        FileNode->OutputByteLength = AslGbl_TableLength;
> +    }
> +
>      return (Status);
>  }
>  
> @@ -293,25 +326,12 @@ DtDoCompile (
>   *
>   *****************************************************************************/
>  
> -static ACPI_STATUS
> +void
>  DtInitialize (
>      void)
>  {
> -    ACPI_STATUS             Status;
>  
>  
> -    Status = AcpiOsInitialize ();
> -    if (ACPI_FAILURE (Status))
> -    {
> -        return (Status);
> -    }
> -
> -    Status = AcpiUtInitGlobals ();
> -    if (ACPI_FAILURE (Status))
> -    {
> -        return (Status);
> -    }
> -
>      AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */
>  
>      AslGbl_FieldList = NULL;
> @@ -319,7 +339,7 @@ DtInitialize (
>      AslGbl_SubtableStack = NULL;
>  
>      sprintf (VersionString, "%X", (UINT32) ACPI_CA_VERSION);
> -    return (AE_OK);
> +    return;
>  }
>  
>  
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index ffa17f63..639c22cb 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -194,7 +194,7 @@ typedef struct dt_field
>  {
>      char                    *Name;       /* Field name (from name : value) */
>      char                    *Value;      /* Field value (from name : value) */
> -    UINT32                  StringLength;/* Length of Value */
> +    UINT32                  StringLength; /* Length of Value */
>      struct dt_field         *Next;       /* Next field */
>      struct dt_field         *NextLabel;  /* If field is a label, next label */
>      UINT32                  Line;        /* Line number for this field */
> @@ -256,6 +256,10 @@ DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_LabelList, NULL);
>  
>  DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_CurrentTableOffset, 0);
>  
> +/* Data table compiler Flex/Bison prototype */
> +
> +DT_EXTERN BOOLEAN           DT_INIT_GLOBAL (AslGbl_DtLexBisonPrototype, FALSE);
> +
>  /* Local caches */
>  
>  DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_SubtableCount, 0);
> @@ -288,6 +292,14 @@ DtCompilePadding (
>      UINT32                  Length,
>      DT_SUBTABLE             **RetSubtable);
>  
> +void
> +DtCreateField (
> +    char                    *Name,
> +    char                    *Value,
> +    UINT32                  Line,
> +    UINT32                  Offset,
> +    UINT32                  Column,
> +    UINT32                  NameColumn);
>  
>  /* dtio - binary and text input/output */
>  
> @@ -427,10 +439,23 @@ DtCompileFlag (
>  
>  /* dtparser - lex/yacc files */
>  
> +UINT64                      DtCompilerParserResult; /* Expression return value */
> +int
> +DtCompilerParserparse (
> +    void);
> +
>  UINT64
>  DtEvaluateExpression (
>      char                    *ExprString);
>  
> +void
> +DtCompilerInitLexer (
> +    FILE                    *inFile);
> +
> +void
> +DtCompilerTerminateLexer (
> +    void);
> +
>  int
>  DtInitLexer (
>      char                    *String);
> diff --git a/src/acpica/source/compiler/dtcompilerparser.l b/src/acpica/source/compiler/dtcompilerparser.l
> new file mode 100644
> index 00000000..0d68f41e
> --- /dev/null
> +++ b/src/acpica/source/compiler/dtcompilerparser.l
> @@ -0,0 +1,288 @@
> +%{
> +/******************************************************************************
> + *
> + * Module Name: dtcompilerparser.l - Flex input file for table compiler lexer
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, 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.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions, and the following disclaimer,
> + *    without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + *    substantially similar to the "NO WARRANTY" disclaimer below
> + *    ("Disclaimer") and any redistribution must be conditioned upon
> + *    including a substantially similar Disclaimer requirement for further
> + *    binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + *    of any contributors may be used to endorse or promote products derived
> + *    from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "aslcompiler.h"
> +#include "dtcompilerparser.y.h"
> +
> +YYSTYPE DtCompilerlval;
> +
> +#define _COMPONENT          ACPI_COMPILER
> +        ACPI_MODULE_NAME    ("dtcompilerscanner")
> +
> +/* handle locations */
> +
> +int DtCompilerParsercolumn = 1;
> +int DtCompilerParserByteOffset = 0;
> +
> +#define YY_USER_ACTION \
> +            DtCompilerParserlloc.first_line = DtCompilerParserlloc.last_line = DtCompilerParserlineno; \
> +            DtCompilerParserlloc.first_column = DtCompilerParsercolumn; \
> +            DtCompilerParserlloc.first_byte_offset = DtCompilerParserByteOffset; \
> +            DtCompilerParserlloc.last_column = DtCompilerParsercolumn + DtCompilerParserleng-1; \
> +            DtCompilerParsercolumn += DtCompilerParserleng; \
> +            DtCompilerParserByteOffset += DtCompilerParserleng; \
> +            DbgPrint (ASL_PARSE_OUTPUT,\
> +                "user action occurred. DtCompilerParserlloc.first_line: %u offset: %u\n",\
> +                DtCompilerParserlloc.first_line, DtCompilerParserlloc.first_byte_offset);
> +%}
> +
> +%option nounput noinput yylineno
> +
> +    /* Indicates a state used for parsing multiline C comments */
> +%x ML_COMMENT
> +%x DATA_STATE
> +
> +WhiteSpace      [ \t\v\r]+
> +NewLines        [\n]+
> +
> +    /* Avoid ", \n, and [] as a part of label name. These are not valid characters of a label name */
> +LabelName       [^ ":\n\[\]]([^":\n\[\]]*[^" :\n\[\]])?
> +
> +    /* Avoid ", \n, \\, and [] as a part of data. These are not valid characters of data */
> +Data            [^ \\":\n\[\]]([^":\n\[\]\\]*[^" :\n\[\]\\])?
> +
> +Text            [^ ":\n][^":\n]*
> +Comment         \[[^\n\[\]]*\]
> +CommentField    {LabelName}{WhiteSpace}*:{WhiteSpace}{Comment}?$
> +
> +
> +%%
> +
> +<DATA_STATE>{WhiteSpace}"\\\n" {
> +        DbgPrint(ASL_PARSE_OUTPUT,"Continuation matched\n");
> +        return (DT_PARSEOP_LINE_CONTINUATION);
> +    }
> +
> +":" {
> +        DbgPrint(ASL_PARSE_OUTPUT, ": Matched\n");
> +        BEGIN (DATA_STATE);
> +        return (':');
> +    }
> +
> +<INITIAL,DATA_STATE>{WhiteSpace} { DbgPrint(ASL_PARSE_OUTPUT,"Whitespace matched\n"); }
> +
> +<INITIAL,DATA_STATE>{Comment}    { DbgPrint(ASL_PARSE_OUTPUT,"Comment matched\n"); }
> +
> +"/*"                     { BEGIN (ML_COMMENT); }
> +<ML_COMMENT>"*/"         { BEGIN (INITIAL); }
> +<ML_COMMENT>"*/\n"       { BEGIN (INITIAL); }
> +<ML_COMMENT>([^*]|\n)+|. /* Ignore */
> +"//".*                   /* Ignore */
> +
> +
> +<DATA_STATE>{Data} {
> +      char *s;
> +      int size = strlen (DtCompilerParsertext);
> +      s=UtLocalCacheCalloc (size + 1);
> +      AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
> +      DtCompilerParserlval.s = s;
> +      DbgPrint (ASL_PARSE_OUTPUT, "Data: %s\n", s);
> +      return (DT_PARSEOP_DATA);
> +}
> +
> +{CommentField}  /* ignore */
> +
> +{LabelName} {
> +    char *s;
> +    int size = strlen (DtCompilerParsertext);
> +    s=UtLocalCacheCalloc (size + 1);
> +    AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
> +    DtCompilerParserlval.s = s;
> +    DbgPrint (ASL_PARSE_OUTPUT, "Label: %s\n", s);
> +    return (DT_PARSEOP_LABEL);
> +}
> +
> +
> +<DATA_STATE>\"{Text}?\" { // remove outer quotes from the string, they are unnecessary
> +    char *s;
> +    int size = strlen (DtCompilerParsertext);
> +    s=UtLocalCacheCalloc (size - 1);
> +    AcpiUtSafeStrncpy (s, DtCompilerParsertext + 1, size - 1);
> +    DtCompilerParserlval.s = s;
> +    DbgPrint (ASL_PARSE_OUTPUT, "String Data: %s\n", s);
> +    BEGIN (INITIAL);
> +    return (DT_PARSEOP_STRING_DATA);
> +}
> +
> +
> +<INITIAL,DATA_STATE>{NewLines} {
> +    DbgPrint(ASL_PARSE_OUTPUT,
> +        "Newline matched (data state). Current line number: %u\n",DtCompilerParserlineno);
> +    BEGIN (INITIAL); DtCompilerParsercolumn = 1;
> +}
> +
> +
> +%%
> +
> +
> +/*
> + * Local support functions
> + */
> +
> +void
> +DtCompilerInitLexer (
> +    FILE                *inFile)
> +{
> +    yyin = inFile;
> +}
> +
> +void
> +DtCompilerTerminateLexer (
> +    void)
> +{
> +    /*
> +     * Flex/Bison increments the lineno for the EOF so decrement by 1 to get
> +     * the correct number of lines.
> +     */
> +    AslGbl_CurrentLineNumber = DtCompilerParserlineno - 1;
> +    AslGbl_InputByteCount = DtCompilerParserByteOffset;
> +}
> diff --git a/src/acpica/source/compiler/dtcompilerparser.y b/src/acpica/source/compiler/dtcompilerparser.y
> new file mode 100644
> index 00000000..ba9d2827
> --- /dev/null
> +++ b/src/acpica/source/compiler/dtcompilerparser.y
> @@ -0,0 +1,287 @@
> +%{
> +/******************************************************************************
> + *
> + * Module Name: dtcompilerparser.y - Bison input file for table compiler parser
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, 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.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions, and the following disclaimer,
> + *    without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + *    substantially similar to the "NO WARRANTY" disclaimer below
> + *    ("Disclaimer") and any redistribution must be conditioned upon
> + *    including a substantially similar Disclaimer requirement for further
> + *    binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + *    of any contributors may be used to endorse or promote products derived
> + *    from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "aslcompiler.h"
> +
> +
> +#define _COMPONENT          DT_COMPILER
> +        ACPI_MODULE_NAME    ("dtcompilerparser")
> +
> +void *                      AslLocalAllocate (unsigned int Size);
> +
> +/* Bison/yacc configuration */
> +
> +#undef alloca
> +#define alloca              AslLocalAllocate
> +
> +int                         DtCompilerParserlex (void);
> +int                         DtCompilerParserparse (void);
> +void                        DtCompilerParsererror (char const *msg);
> +extern char                 *DtCompilerParsertext;
> +extern DT_FIELD             *AslGbl_CurrentField;
> +
> +extern UINT64               DtCompilerParserResult; /* Expression return value */
> +extern UINT64               DtCompilerParserlineno; /* Current line number */
> +
> +/* Bison/yacc configuration */
> +
> +#define yytname             DtCompilerParsername
> +#define YYDEBUG             1               /* Enable debug output */
> +#define YYERROR_VERBOSE     1               /* Verbose error messages */
> +#define YYFLAG              -32768
> +
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors  */
> +
> +#define YYMALLOC            malloc
> +#define YYFREE              free
> +
> +%}
> +
> +%code requires {
> +
> +    typedef struct YYLTYPE {
> +        int first_line;
> +        int last_line;
> +        int first_column;
> +        int last_column;
> +        int first_byte_offset;
> +    } YYLTYPE;
> +
> +    #define YYLTYPE_IS_DECLARED 1
> +}
> +
> +
> +%union {
> +    char                *s;
> +    DT_FIELD            *f;
> +}
> +
> +
> +%type  <f> Table
> +%token <s> DT_PARSEOP_DATA
> +%token <s> DT_PARSEOP_LABEL
> +%token <s> DT_PARSEOP_STRING_DATA
> +%token <s> DT_PARSEOP_LINE_CONTINUATION
> +%type  <s> Data
> +%type  <s> Datum
> +%type  <s> MultiLineData
> +%type  <s> MultiLineDataList
> +
> +
> +%%
> +
> +Table
> +    :
> +    FieldList { DtCompilerParserResult = 5;}
> +    ;
> +
> +FieldList
> +    : Field FieldList
> +    | Field
> +    ;
> +
> +Field
> +    : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, (@3).first_line, (@1).first_byte_offset, (@1).first_column, (@3).first_column); }
> +    ;
> +
> +Data
> +    : MultiLineDataList        { $$ = $1; }
> +    | Datum                    { $$ = $1; }
> +    | Datum MultiLineDataList  { $$ = $1; } /* combine the string with strcat */
> +    ;
> +
> +MultiLineDataList
> +    : MultiLineDataList MultiLineData { $$ = AcpiUtStrcat(AcpiUtStrcat($1, " "), $2); } /* combine the strings with strcat */
> +    | MultiLineData                   { $$ = $1; }
> +    ;
> +
> +MultiLineData
> +    : DT_PARSEOP_LINE_CONTINUATION Datum { DbgPrint (ASL_PARSE_OUTPUT, "line continuation detected\n"); $$ = $2; }
> +    ;
> +
> +Datum
> +    : DT_PARSEOP_DATA        { DbgPrint (ASL_PARSE_OUTPUT, "parser        data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
> +    | DT_PARSEOP_STRING_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
> +    ;
> +
> +
> +%%
> +
> +
> +/*
> + * Local support functions, including parser entry point
> + */
> +/******************************************************************************
> + *
> + * FUNCTION:    DtCompilerParsererror
> + *
> + * PARAMETERS:  Message             - Parser-generated error message
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Handler for parser errors
> + *
> + *****************************************************************************/
> +
> +void
> +DtCompilerParsererror (
> +    char const              *Message)
> +{
> +    DtError (ASL_ERROR, ASL_MSG_SYNTAX,
> +        AslGbl_CurrentField, (char *) Message);
> +}
> +
> +int
> +DtCompilerParserwrap(void)
> +{
> +  return (1);
> +}
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index 74ebf570..1f716761 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -280,7 +280,9 @@ DtCompileString (
>  
>      if (Length > ByteLength)
>      {
> -        sprintf (AslGbl_MsgBuffer, "Maximum %u characters", ByteLength);
> +        sprintf (AslGbl_MsgBuffer,
> +            "Maximum %u characters, found %u characters [%s]",
> +            ByteLength, Length, Field->Value);
>          DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
>          Length = ByteLength;
>      }
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index ae827513..d027353c 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -493,6 +493,59 @@ DtParseLine (
>  }
>  
>  
> +/******************************************************************************
> + *
> + * FUNCTION:    DtCreateField
> + *
> + * PARAMETERS: Name
> + *             Value
> + *             Line
> + *             Offset
> + *             Column
> + *             NameColumn
> + *
> + * RETURN:     None
> + *
> + * DESCRIPTION: Create a field
> + *
> + *****************************************************************************/
> +
> +void
> +DtCreateField (
> +    char                    *Name,
> +    char                    *Value,
> +    UINT32                  Line,
> +    UINT32                  Offset,
> +    UINT32                  Column,
> +    UINT32                  NameColumn)
> +{
> +    DT_FIELD                *Field = UtFieldCacheCalloc ();
> +
> +
> +    Field->StringLength = 0;
> +    if (Name)
> +    {
> +        Field->Name =
> +            strcpy (UtLocalCacheCalloc (strlen (Name) + 1), Name);
> +    }
> +
> +    if (Value)
> +    {
> +        Field->StringLength = strlen (Value);
> +        Field->Value =
> +            strcpy (UtLocalCacheCalloc (Field->StringLength + 1), Value);
> +    }
> +
> +    Field->Line = Line;
> +    Field->ByteOffset = Offset;
> +    Field->NameColumn = NameColumn;
> +    Field->Column = Column;
> +    DtLinkField (Field);
> +
> +    DtDumpFieldList (AslGbl_FieldList);
> +}
> +
> +
>  /******************************************************************************
>   *
>   * FUNCTION:    DtGetNextLine
> @@ -1117,7 +1170,7 @@ DtDumpSubtableInfo (
>  {
>  
>      DbgPrint (ASL_DEBUG_OUTPUT,
> -        "[%.04X] %24s %.08X %.08X %.08X %.08X %.08X %p %p %p\n",
> +        "[%.04X] %24s %.08X %.08X %.08X %.08X %p %p %p %p\n",
>          Subtable->Depth, Subtable->Name, Subtable->Length, Subtable->TotalLength,
>          Subtable->SizeOfLengthField, Subtable->Flags, Subtable,
>          Subtable->Parent, Subtable->Child, Subtable->Peer);
> @@ -1131,7 +1184,7 @@ DtDumpSubtableTree (
>  {
>  
>      DbgPrint (ASL_DEBUG_OUTPUT,
> -        "[%.04X] %24s %*s%08X (%.02X) - (%.02X)\n",
> +        "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n",
>          Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ",
>          Subtable, Subtable->Length, Subtable->TotalLength);
>  }
> @@ -1225,7 +1278,7 @@ DtWriteFieldToListing (
>      if (strlen (Field->Value) > 64)
>      {
>          FlPrintFile (ASL_FILE_LISTING_OUTPUT, "...Additional data, length 0x%X\n",
> -            strlen (Field->Value));
> +            (UINT32) strlen (Field->Value));
>      }
>  
>      FlPrintFile (ASL_FILE_LISTING_OUTPUT, "\n");
> diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
> index 2dc09334..72b14101 100644
> --- a/src/acpica/source/compiler/dtparser.l
> +++ b/src/acpica/source/compiler/dtparser.l
> @@ -227,7 +227,6 @@ int
>  DtInitLexer (
>      char                    *String)
>  {
> -
>      LexBuffer = yy_scan_string (String);
>      return (LexBuffer == NULL);
>  }
> @@ -236,6 +235,5 @@ void
>  DtTerminateLexer (
>      void)
>  {
> -
>      yy_delete_buffer (LexBuffer);
>  }
> diff --git a/src/acpica/source/compiler/dttemplate.c b/src/acpica/source/compiler/dttemplate.c
> index 4cc6c040..a53b9521 100644
> --- a/src/acpica/source/compiler/dttemplate.c
> +++ b/src/acpica/source/compiler/dttemplate.c
> @@ -509,7 +509,7 @@ DtCreateOneTemplate (
>      AcpiUtStrlwr (DisasmFilename);
>      if (!UtQueryForOverwrite (DisasmFilename))
>      {
> -        return (AE_ERROR);
> +        return (AE_OK);
>      }
>  
>      File = fopen (DisasmFilename, "w+");
> diff --git a/src/acpica/source/compiler/prmacros.c b/src/acpica/source/compiler/prmacros.c
> index e3ee5beb..14be2a75 100644
> --- a/src/acpica/source/compiler/prmacros.c
> +++ b/src/acpica/source/compiler/prmacros.c
> @@ -223,7 +223,7 @@ PrAddDefine (
>      DefineInfo = PrMatchDefine (Identifier);
>      if (DefineInfo)
>      {
> -        DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID,
> +        DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
>              "#define: name already exists: %s\n",
>              AslGbl_CurrentLineNumber, Identifier);
>  
> diff --git a/src/acpica/source/compiler/prscan.c b/src/acpica/source/compiler/prscan.c
> index 9138ba5d..109da26a 100644
> --- a/src/acpica/source/compiler/prscan.c
> +++ b/src/acpica/source/compiler/prscan.c
> @@ -850,7 +850,7 @@ PrDoDirective (
>  
>          DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID
>              "Start #include file \"%s\"\n", AslGbl_CurrentLineNumber,
> -            Token, AslGbl_CurrentLineNumber);
> +            Token);
>  
>          PrDoIncludeFile (Token);
>          break;
> @@ -1356,7 +1356,7 @@ PrDoIncludeBuffer (
>      {
>          if (!(i % 8))
>          {
> -            FlPrintFile (ASL_FILE_PREPROCESSOR, "\n   ", c);
> +            FlPrintFile (ASL_FILE_PREPROCESSOR, "\n   ");
>          }
>  
>          FlPrintFile (ASL_FILE_PREPROCESSOR, " 0x%2.2X,", c);
> @@ -1369,6 +1369,6 @@ PrDoIncludeBuffer (
>  
>      /* Close the Name() operator */
>  
> -    FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n", BufferName);
> +    FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n");
>      fclose (BinaryBufferFile);
>  }
> diff --git a/src/acpica/source/components/debugger/dbhistry.c b/src/acpica/source/components/debugger/dbhistry.c
> index 6136c801..06971915 100644
> --- a/src/acpica/source/components/debugger/dbhistry.c
> +++ b/src/acpica/source/components/debugger/dbhistry.c
> @@ -284,7 +284,7 @@ AcpiDbDisplayHistory (
>      {
>          if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
>          {
> -            AcpiOsPrintf ("%3ld  %s\n",
> +            AcpiOsPrintf ("%3u  %s\n",
>                  AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
>                  AcpiGbl_HistoryBuffer[HistoryIndex].Command);
>          }
> diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
> index d2e54b4e..d091d351 100644
> --- a/src/acpica/source/components/debugger/dbinput.c
> +++ b/src/acpica/source/components/debugger/dbinput.c
> @@ -785,7 +785,7 @@ AcpiDbGetLine (
>      {
>          AcpiOsPrintf (
>              "Buffer overflow while parsing input line (max %u characters)\n",
> -            sizeof (AcpiGbl_DbParsedBuf));
> +            (UINT32) sizeof (AcpiGbl_DbParsedBuf));
>          return (0);
>      }
>  
> @@ -1060,10 +1060,10 @@ AcpiDbCommandDispatch (
>          if (ParamCount == 0)
>          {
>              AcpiOsPrintf (
> -                "Current debug level for file output is:    %8.8lX\n",
> +                "Current debug level for file output is:    %8.8X\n",
>                  AcpiGbl_DbDebugLevel);
>              AcpiOsPrintf (
> -                "Current debug level for console output is: %8.8lX\n",
> +                "Current debug level for console output is: %8.8X\n",
>                  AcpiGbl_DbConsoleDebugLevel);
>          }
>          else if (ParamCount == 2)
> @@ -1072,7 +1072,7 @@ AcpiDbCommandDispatch (
>              AcpiGbl_DbConsoleDebugLevel =
>                  strtoul (AcpiGbl_DbArgs[1], NULL, 16);
>              AcpiOsPrintf (
> -                "Debug Level for console output was %8.8lX, now %8.8lX\n",
> +                "Debug Level for console output was %8.8X, now %8.8X\n",
>                  Temp, AcpiGbl_DbConsoleDebugLevel);
>          }
>          else
> @@ -1080,7 +1080,7 @@ AcpiDbCommandDispatch (
>              Temp = AcpiGbl_DbDebugLevel;
>              AcpiGbl_DbDebugLevel = strtoul (AcpiGbl_DbArgs[1], NULL, 16);
>              AcpiOsPrintf (
> -                "Debug Level for file output was %8.8lX, now %8.8lX\n",
> +                "Debug Level for file output was %8.8X, now %8.8X\n",
>                  Temp, AcpiGbl_DbDebugLevel);
>          }
>          break;
> diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
> index 983faae0..6893c550 100644
> --- a/src/acpica/source/components/debugger/dbmethod.c
> +++ b/src/acpica/source/components/debugger/dbmethod.c
> @@ -493,6 +493,11 @@ AcpiDbDisassembleMethod (
>      }
>  
>      Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId);
> +    if (ACPI_FAILURE(Status))
> +    {
> +        return (Status);
> +    }
> +
>      WalkState->OwnerId = ObjDesc->Method.OwnerId;
>  
>      /* Push start scope on scope stack and make it current */
> diff --git a/src/acpica/source/components/debugger/dbstats.c b/src/acpica/source/components/debugger/dbstats.c
> index 06729cca..1293759d 100644
> --- a/src/acpica/source/components/debugger/dbstats.c
> +++ b/src/acpica/source/components/debugger/dbstats.c
> @@ -544,14 +544,14 @@ AcpiDbDisplayStatistics (
>  
>          for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)
>          {
> -            AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),
> +            AcpiOsPrintf ("%16.16s %10u %10u\n", AcpiUtGetTypeName (i),
>                  AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);
>          }
>  
> -        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown",
> +        AcpiOsPrintf ("%16.16s %10u %10u\n", "Misc/Unknown",
>              AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc);
>  
> -        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:",
> +        AcpiOsPrintf ("%16.16s %10u %10u\n", "TOTALS:",
>              AcpiGbl_NumNodes, AcpiGbl_NumObjects);
>          break;
>  
> @@ -577,17 +577,15 @@ AcpiDbDisplayStatistics (
>      case CMD_STAT_MISC:
>  
>          AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
> -        AcpiOsPrintf ("Calls to AcpiPsFind:..  ........% 7ld\n",
> +        AcpiOsPrintf ("%-28s:       %7u\n", "Calls to AcpiPsFind",
>              AcpiGbl_PsFindCount);
> -        AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
> +        AcpiOsPrintf ("%-28s:       %7u\n", "Calls to AcpiNsLookup",
>              AcpiGbl_NsLookupCount);
>  
> -        AcpiOsPrintf ("\n");
> -
> -        AcpiOsPrintf ("Mutex usage:\n\n");
> +        AcpiOsPrintf ("\nMutex usage:\n\n");
>          for (i = 0; i < ACPI_NUM_MUTEX; i++)
>          {
> -            AcpiOsPrintf ("%-28s:       % 7ld\n",
> +            AcpiOsPrintf ("%-28s:       %7u\n",
>                  AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
>          }
>          break;
> @@ -596,50 +594,50 @@ AcpiDbDisplayStatistics (
>  
>          AcpiOsPrintf ("\nInternal object sizes:\n\n");
>  
> -        AcpiOsPrintf ("Common           %3d\n", sizeof (ACPI_OBJECT_COMMON));
> -        AcpiOsPrintf ("Number           %3d\n", sizeof (ACPI_OBJECT_INTEGER));
> -        AcpiOsPrintf ("String           %3d\n", sizeof (ACPI_OBJECT_STRING));
> -        AcpiOsPrintf ("Buffer           %3d\n", sizeof (ACPI_OBJECT_BUFFER));
> -        AcpiOsPrintf ("Package          %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
> -        AcpiOsPrintf ("BufferField      %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
> -        AcpiOsPrintf ("Device           %3d\n", sizeof (ACPI_OBJECT_DEVICE));
> -        AcpiOsPrintf ("Event            %3d\n", sizeof (ACPI_OBJECT_EVENT));
> -        AcpiOsPrintf ("Method           %3d\n", sizeof (ACPI_OBJECT_METHOD));
> -        AcpiOsPrintf ("Mutex            %3d\n", sizeof (ACPI_OBJECT_MUTEX));
> -        AcpiOsPrintf ("Region           %3d\n", sizeof (ACPI_OBJECT_REGION));
> -        AcpiOsPrintf ("PowerResource    %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
> -        AcpiOsPrintf ("Processor        %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
> -        AcpiOsPrintf ("ThermalZone      %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
> -        AcpiOsPrintf ("RegionField      %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
> -        AcpiOsPrintf ("BankField        %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
> -        AcpiOsPrintf ("IndexField       %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
> -        AcpiOsPrintf ("Reference        %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
> -        AcpiOsPrintf ("Notify           %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
> -        AcpiOsPrintf ("AddressSpace     %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
> -        AcpiOsPrintf ("Extra            %3d\n", sizeof (ACPI_OBJECT_EXTRA));
> -        AcpiOsPrintf ("Data             %3d\n", sizeof (ACPI_OBJECT_DATA));
> +        AcpiOsPrintf ("Common           %3d\n", (UINT32) sizeof (ACPI_OBJECT_COMMON));
> +        AcpiOsPrintf ("Number           %3d\n", (UINT32) sizeof (ACPI_OBJECT_INTEGER));
> +        AcpiOsPrintf ("String           %3d\n", (UINT32) sizeof (ACPI_OBJECT_STRING));
> +        AcpiOsPrintf ("Buffer           %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER));
> +        AcpiOsPrintf ("Package          %3d\n", (UINT32) sizeof (ACPI_OBJECT_PACKAGE));
> +        AcpiOsPrintf ("BufferField      %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER_FIELD));
> +        AcpiOsPrintf ("Device           %3d\n", (UINT32) sizeof (ACPI_OBJECT_DEVICE));
> +        AcpiOsPrintf ("Event            %3d\n", (UINT32) sizeof (ACPI_OBJECT_EVENT));
> +        AcpiOsPrintf ("Method           %3d\n", (UINT32) sizeof (ACPI_OBJECT_METHOD));
> +        AcpiOsPrintf ("Mutex            %3d\n", (UINT32) sizeof (ACPI_OBJECT_MUTEX));
> +        AcpiOsPrintf ("Region           %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION));
> +        AcpiOsPrintf ("PowerResource    %3d\n", (UINT32) sizeof (ACPI_OBJECT_POWER_RESOURCE));
> +        AcpiOsPrintf ("Processor        %3d\n", (UINT32) sizeof (ACPI_OBJECT_PROCESSOR));
> +        AcpiOsPrintf ("ThermalZone      %3d\n", (UINT32) sizeof (ACPI_OBJECT_THERMAL_ZONE));
> +        AcpiOsPrintf ("RegionField      %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION_FIELD));
> +        AcpiOsPrintf ("BankField        %3d\n", (UINT32) sizeof (ACPI_OBJECT_BANK_FIELD));
> +        AcpiOsPrintf ("IndexField       %3d\n", (UINT32) sizeof (ACPI_OBJECT_INDEX_FIELD));
> +        AcpiOsPrintf ("Reference        %3d\n", (UINT32) sizeof (ACPI_OBJECT_REFERENCE));
> +        AcpiOsPrintf ("Notify           %3d\n", (UINT32) sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
> +        AcpiOsPrintf ("AddressSpace     %3d\n", (UINT32) sizeof (ACPI_OBJECT_ADDR_HANDLER));
> +        AcpiOsPrintf ("Extra            %3d\n", (UINT32) sizeof (ACPI_OBJECT_EXTRA));
> +        AcpiOsPrintf ("Data             %3d\n", (UINT32) sizeof (ACPI_OBJECT_DATA));
>  
>          AcpiOsPrintf ("\n");
>  
> -        AcpiOsPrintf ("ParseObject      %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
> -        AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
> -        AcpiOsPrintf ("ParseObjectAsl   %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
> -        AcpiOsPrintf ("OperandObject    %3d\n", sizeof (ACPI_OPERAND_OBJECT));
> -        AcpiOsPrintf ("NamespaceNode    %3d\n", sizeof (ACPI_NAMESPACE_NODE));
> -        AcpiOsPrintf ("AcpiObject       %3d\n", sizeof (ACPI_OBJECT));
> +        AcpiOsPrintf ("ParseObject      %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_COMMON));
> +        AcpiOsPrintf ("ParseObjectNamed %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_NAMED));
> +        AcpiOsPrintf ("ParseObjectAsl   %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_ASL));
> +        AcpiOsPrintf ("OperandObject    %3d\n", (UINT32) sizeof (ACPI_OPERAND_OBJECT));
> +        AcpiOsPrintf ("NamespaceNode    %3d\n", (UINT32) sizeof (ACPI_NAMESPACE_NODE));
> +        AcpiOsPrintf ("AcpiObject       %3d\n", (UINT32) sizeof (ACPI_OBJECT));
>  
>          AcpiOsPrintf ("\n");
>  
> -        AcpiOsPrintf ("Generic State    %3d\n", sizeof (ACPI_GENERIC_STATE));
> -        AcpiOsPrintf ("Common State     %3d\n", sizeof (ACPI_COMMON_STATE));
> -        AcpiOsPrintf ("Control State    %3d\n", sizeof (ACPI_CONTROL_STATE));
> -        AcpiOsPrintf ("Update State     %3d\n", sizeof (ACPI_UPDATE_STATE));
> -        AcpiOsPrintf ("Scope State      %3d\n", sizeof (ACPI_SCOPE_STATE));
> -        AcpiOsPrintf ("Parse Scope      %3d\n", sizeof (ACPI_PSCOPE_STATE));
> -        AcpiOsPrintf ("Package State    %3d\n", sizeof (ACPI_PKG_STATE));
> -        AcpiOsPrintf ("Thread State     %3d\n", sizeof (ACPI_THREAD_STATE));
> -        AcpiOsPrintf ("Result Values    %3d\n", sizeof (ACPI_RESULT_VALUES));
> -        AcpiOsPrintf ("Notify Info      %3d\n", sizeof (ACPI_NOTIFY_INFO));
> +        AcpiOsPrintf ("Generic State    %3d\n", (UINT32) sizeof (ACPI_GENERIC_STATE));
> +        AcpiOsPrintf ("Common State     %3d\n", (UINT32) sizeof (ACPI_COMMON_STATE));
> +        AcpiOsPrintf ("Control State    %3d\n", (UINT32) sizeof (ACPI_CONTROL_STATE));
> +        AcpiOsPrintf ("Update State     %3d\n", (UINT32) sizeof (ACPI_UPDATE_STATE));
> +        AcpiOsPrintf ("Scope State      %3d\n", (UINT32) sizeof (ACPI_SCOPE_STATE));
> +        AcpiOsPrintf ("Parse Scope      %3d\n", (UINT32) sizeof (ACPI_PSCOPE_STATE));
> +        AcpiOsPrintf ("Package State    %3d\n", (UINT32) sizeof (ACPI_PKG_STATE));
> +        AcpiOsPrintf ("Thread State     %3d\n", (UINT32) sizeof (ACPI_THREAD_STATE));
> +        AcpiOsPrintf ("Result Values    %3d\n", (UINT32) sizeof (ACPI_RESULT_VALUES));
> +        AcpiOsPrintf ("Notify Info      %3d\n", (UINT32) sizeof (ACPI_NOTIFY_INFO));
>          break;
>  
>      case CMD_STAT_STACK:
> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
> index a7ee84c9..50b17c00 100644
> --- a/src/acpica/source/components/events/evgpe.c
> +++ b/src/acpica/source/components/events/evgpe.c
> @@ -848,6 +848,15 @@ AcpiEvDetectGpe (
>  
>      Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
>  
> +    if (!GpeEventInfo)
> +    {
> +        GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber);
> +        if (!GpeEventInfo)
> +        {
> +            goto ErrorExit;
> +        }
> +    }
> +
>      /* Get the info block for the entire GPE register */
>  
>      GpeRegisterInfo = GpeEventInfo->RegisterInfo;
> diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
> index 1dc0fe1d..e1481fdf 100644
> --- a/src/acpica/source/components/events/evxfgpe.c
> +++ b/src/acpica/source/components/events/evxfgpe.c
> @@ -875,6 +875,33 @@ UnlockAndExit:
>  ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
>  
>  
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDispatchGpe
> + *
> + * PARAMETERS:  GpeDevice           - Parent GPE Device. NULL for GPE0/GPE1
> + *              GpeNumber           - GPE level within the GPE block
> + *
> + * RETURN:      INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
> + *
> + * DESCRIPTION: Detect and dispatch a General Purpose Event to either a function
> + *              (e.g. EC) or method (e.g. _Lxx/_Exx) handler.
> + *
> + ******************************************************************************/
> +
> +UINT32
> +AcpiDispatchGpe(
> +    ACPI_HANDLE             GpeDevice,
> +    UINT32                  GpeNumber)
> +{
> +    ACPI_FUNCTION_TRACE(acpi_dispatch_gpe);
> +
> +    return (AcpiEvDetectGpe (GpeDevice, NULL, GpeNumber));
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiDispatchGpe)
> +
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    AcpiFinishGpe
> diff --git a/src/acpica/source/components/executer/exconfig.c b/src/acpica/source/components/executer/exconfig.c
> index eba1a6d2..1e3576ca 100644
> --- a/src/acpica/source/components/executer/exconfig.c
> +++ b/src/acpica/source/components/executer/exconfig.c
> @@ -344,7 +344,9 @@ AcpiExLoadTableOp (
>  
>      /* Complete the initialization/resolution of new objects */
>  
> -    AcpiNsInitializeObjects ();
> +    AcpiExExitInterpreter();
> +    AcpiNsInitializeObjects();
> +    AcpiExEnterInterpreter();
>  
>      /* Parameter Data (optional) */
>  
> diff --git a/src/acpica/source/components/executer/exdump.c b/src/acpica/source/components/executer/exdump.c
> index fa70b410..b6b70e67 100644
> --- a/src/acpica/source/components/executer/exdump.c
> +++ b/src/acpica/source/components/executer/exdump.c
> @@ -255,7 +255,7 @@ static ACPI_EXDUMP_INFO     AcpiExDumpMethod[9] =
>      {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ParamCount),            "Parameter Count"},
>      {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.SyncLevel),             "Sync Level"},
>      {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.Mutex),                 "Mutex"},
> -    {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
> +    {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
>      {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ThreadCount),           "Thread Count"},
>      {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Method.AmlLength),             "Aml Length"},
>      {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.AmlStart),              "Aml Start"}
> @@ -422,8 +422,8 @@ static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
>  static ACPI_EXDUMP_INFO     AcpiExDumpNode[7] =
>  {
>      {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
> -    {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
> -    {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
> +    {ACPI_EXD_UINT16,   ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
> +    {ACPI_EXD_UINT16,   ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
>      {ACPI_EXD_LIST,     ACPI_EXD_NSOFFSET (Object),                     "Object List"},
>      {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Parent),                     "Parent"},
>      {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Child),                      "Child"},
> diff --git a/src/acpica/source/components/namespace/nsaccess.c b/src/acpica/source/components/namespace/nsaccess.c
> index 4be555c0..a4db29ee 100644
> --- a/src/acpica/source/components/namespace/nsaccess.c
> +++ b/src/acpica/source/components/namespace/nsaccess.c
> @@ -767,7 +767,7 @@ AcpiNsLookup (
>                  if (Flags & ACPI_NS_PREFIX_MUST_EXIST)
>                  {
>                      AcpiOsPrintf (ACPI_MSG_BIOS_ERROR
> -                        "Object does not exist: %4.4s\n", &SimpleName);
> +                        "Object does not exist: %4.4s\n", (char *) &SimpleName);
>                  }
>  #endif
>                  /* Name not found in ACPI namespace */
> diff --git a/src/acpica/source/components/namespace/nsalloc.c b/src/acpica/source/components/namespace/nsalloc.c
> index 12772308..15fa2766 100644
> --- a/src/acpica/source/components/namespace/nsalloc.c
> +++ b/src/acpica/source/components/namespace/nsalloc.c
> @@ -423,7 +423,7 @@ AcpiNsInstallNode (
>      Node->Type = (UINT8) Type;
>  
>      ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
> -        "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n",
> +        "%4.4s (%s) [Node %p Owner %3.3X] added to %4.4s (%s) [Node %p]\n",
>          AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId,
>          AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type),
>          ParentNode));
> diff --git a/src/acpica/source/components/namespace/nsdump.c b/src/acpica/source/components/namespace/nsdump.c
> index 6ea04525..8a2a7e92 100644
> --- a/src/acpica/source/components/namespace/nsdump.c
> +++ b/src/acpica/source/components/namespace/nsdump.c
> @@ -381,7 +381,7 @@ AcpiNsDumpOneObject (
>  
>      /* Now we can print out the pertinent information */
>  
> -    AcpiOsPrintf (" %-12s %p %2.2X ",
> +    AcpiOsPrintf (" %-12s %p %3.3X ",
>          AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId);
>  
>      DbgLevel = AcpiDbgLevel;
> diff --git a/src/acpica/source/components/namespace/nsrepair2.c b/src/acpica/source/components/namespace/nsrepair2.c
> index a0b10747..302faade 100644
> --- a/src/acpica/source/components/namespace/nsrepair2.c
> +++ b/src/acpica/source/components/namespace/nsrepair2.c
> @@ -289,7 +289,7 @@ static const ACPI_REPAIR_INFO       AcpiNsRepairableNames[] =
>  
>  #define ACPI_FDE_FIELD_COUNT        5
>  #define ACPI_FDE_BYTE_BUFFER_SIZE   5
> -#define ACPI_FDE_DWORD_BUFFER_SIZE  (ACPI_FDE_FIELD_COUNT * sizeof (UINT32))
> +#define ACPI_FDE_DWORD_BUFFER_SIZE  (ACPI_FDE_FIELD_COUNT * (UINT32) sizeof (UINT32))
>  
>  
>  /******************************************************************************
> diff --git a/src/acpica/source/components/tables/tbdata.c b/src/acpica/source/components/tables/tbdata.c
> index ba0c9108..84dd25bd 100644
> --- a/src/acpica/source/components/tables/tbdata.c
> +++ b/src/acpica/source/components/tables/tbdata.c
> @@ -973,6 +973,7 @@ AcpiTbDeleteNamespaceByOwner (
>      {
>          return_ACPI_STATUS (Status);
>      }
> +
>      AcpiNsDeleteNamespaceByOwner (OwnerId);
>      AcpiUtReleaseWriteLock (&AcpiGbl_NamespaceRwLock);
>      return_ACPI_STATUS (Status);
> diff --git a/src/acpica/source/components/utilities/utdebug.c b/src/acpica/source/components/utilities/utdebug.c
> index 5049f6bf..f00b91ad 100644
> --- a/src/acpica/source/components/utilities/utdebug.c
> +++ b/src/acpica/source/components/utilities/utdebug.c
> @@ -322,7 +322,7 @@ AcpiDebugPrint (
>       * Display the module name, current line number, thread ID (if requested),
>       * current procedure nesting level, and the current procedure name
>       */
> -    AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber);
> +    AcpiOsPrintf ("%9s-%04d ", ModuleName, LineNumber);
>  
>  #ifdef ACPI_APPLICATION
>      /*
> @@ -343,7 +343,7 @@ AcpiDebugPrint (
>          FillCount = 0;
>      }
>  
> -    AcpiOsPrintf ("[%02ld] %*s",
> +    AcpiOsPrintf ("[%02d] %*s",
>          AcpiGbl_NestingLevel, AcpiGbl_NestingLevel + 1, " ");
>      AcpiOsPrintf ("%s%*s: ",
>          AcpiUtTrimFunctionName (FunctionName), FillCount, " ");
> diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
> index 624c034c..8fcc4c23 100644
> --- a/src/acpica/source/components/utilities/uterror.c
> +++ b/src/acpica/source/components/utilities/uterror.c
> @@ -188,7 +188,7 @@ AcpiUtPredefinedWarning (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...)
>  {
> @@ -237,7 +237,7 @@ AcpiUtPredefinedInfo (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...)
>  {
> @@ -286,7 +286,7 @@ AcpiUtPredefinedBiosError (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...)
>  {
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index 1413b979..51ccc8bf 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -212,13 +212,14 @@ static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
>      {"Windows 2006 SP2",    NULL, 0, ACPI_OSI_WIN_VISTA_SP2},    /* Windows Vista SP2 - Added 09/2010 */
>      {"Windows 2009",        NULL, 0, ACPI_OSI_WIN_7},            /* Windows 7 and Server 2008 R2 - Added 09/2009 */
>      {"Windows 2012",        NULL, 0, ACPI_OSI_WIN_8},            /* Windows 8 and Server 2012 - Added 08/2012 */
> -    {"Windows 2013",        NULL, 0, ACPI_OSI_WIN_8},            /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
> +    {"Windows 2013",        NULL, 0, ACPI_OSI_WIN_8_1},          /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
>      {"Windows 2015",        NULL, 0, ACPI_OSI_WIN_10},           /* Windows 10 - Added 03/2015 */
>      {"Windows 2016",        NULL, 0, ACPI_OSI_WIN_10_RS1},       /* Windows 10 version 1607 - Added 12/2017 */
>      {"Windows 2017",        NULL, 0, ACPI_OSI_WIN_10_RS2},       /* Windows 10 version 1703 - Added 12/2017 */
>      {"Windows 2017.2",      NULL, 0, ACPI_OSI_WIN_10_RS3},       /* Windows 10 version 1709 - Added 02/2018 */
>      {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 version 1803 - Added 11/2018 */
>      {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
> +    {"Windows 2019",        NULL, 0, ACPI_OSI_WIN_10_19H1},      /* Windows 10 version 1903 - Added 08/2019 */
>  
>      /* Feature Group Strings */
>  
> diff --git a/src/acpica/source/components/utilities/utownerid.c b/src/acpica/source/components/utilities/utownerid.c
> index 64a11389..ade51c8a 100644
> --- a/src/acpica/source/components/utilities/utownerid.c
> +++ b/src/acpica/source/components/utilities/utownerid.c
> @@ -190,7 +190,7 @@ AcpiUtAllocateOwnerId (
>      if (*OwnerId)
>      {
>          ACPI_ERROR ((AE_INFO,
> -            "Owner ID [0x%2.2X] already exists", *OwnerId));
> +            "Owner ID [0x%3.3X] already exists", *OwnerId));
>          return_ACPI_STATUS (AE_ALREADY_EXISTS);
>      }
>  
> @@ -246,13 +246,13 @@ AcpiUtAllocateOwnerId (
>                  /*
>                   * Construct encoded ID from the index and bit position
>                   *
> -                 * Note: Last [j].k (bit 255) is never used and is marked
> +                 * Note: Last [j].k (bit 4095) is never used and is marked
>                   * permanently allocated (prevents +1 overflow)
>                   */
>                  *OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j));
>  
>                  ACPI_DEBUG_PRINT ((ACPI_DB_VALUES,
> -                    "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId));
> +                    "Allocated OwnerId: 0x%3.3X\n", (unsigned int) *OwnerId));
>                  goto Exit;
>              }
>          }
> @@ -272,7 +272,7 @@ AcpiUtAllocateOwnerId (
>       */
>      Status = AE_OWNER_ID_LIMIT;
>      ACPI_ERROR ((AE_INFO,
> -        "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT"));
> +        "Could not allocate new OwnerId (4095 max), AE_OWNER_ID_LIMIT"));
>  
>  Exit:
>      (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> @@ -315,7 +315,7 @@ AcpiUtReleaseOwnerId (
>  
>      if (OwnerId == 0)
>      {
> -        ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%2.2X", OwnerId));
> +        ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%3.3X", OwnerId));
>          return_VOID;
>      }
>  
> @@ -345,7 +345,7 @@ AcpiUtReleaseOwnerId (
>      else
>      {
>          ACPI_ERROR ((AE_INFO,
> -            "Release of non-allocated OwnerId: 0x%2.2X", OwnerId + 1));
> +            "Attempted release of non-allocated OwnerId: 0x%3.3X", OwnerId + 1));
>      }
>  
>      (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index e93cfe1e..50bfe0b9 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -239,9 +239,9 @@
>  
>  #define ACPI_DEFAULT_PAGE_SIZE          4096    /* Must be power of 2 */
>  
> -/* OwnerId tracking. 8 entries allows for 255 OwnerIds */
> +/* OwnerId tracking. 128 entries allows for 4095 OwnerIds */
>  
> -#define ACPI_NUM_OWNERID_MASKS          8
> +#define ACPI_NUM_OWNERID_MASKS          128
>  
>  /* Size of the root table array is increased by this increment */
>  
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index e1ed0053..c3703c15 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -295,12 +295,12 @@ typedef struct acpi_namespace_node
>      union acpi_operand_object       *Object;        /* Interpreter object */
>      UINT8                           DescriptorType; /* Differentiate object descriptor types */
>      UINT8                           Type;           /* ACPI Type associated with this name */
> -    UINT8                           Flags;          /* Miscellaneous flags */
> -    ACPI_OWNER_ID                   OwnerId;        /* Node creator */
> +    UINT16                          Flags;          /* Miscellaneous flags */
>      ACPI_NAME_UNION                 Name;           /* ACPI Name, always 4 chars per ACPI spec */
>      struct acpi_namespace_node      *Parent;        /* Parent node */
>      struct acpi_namespace_node      *Child;         /* First child */
>      struct acpi_namespace_node      *Peer;          /* First peer */
> +    ACPI_OWNER_ID                   OwnerId;        /* Node creator */
>  
>      /*
>       * The following fields are used by the ASL compiler and disassembler only
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index b9b30200..74feb8d9 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -333,8 +333,8 @@ typedef struct acpi_object_method
>      } Dispatch;
>  
>      UINT32                          AmlLength;
> -    UINT8                           ThreadCount;
>      ACPI_OWNER_ID                   OwnerId;
> +    UINT8                           ThreadCount;
>  
>  } ACPI_OBJECT_METHOD;
>  
> diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
> index 19eef638..dfcd008f 100644
> --- a/src/acpica/source/include/acpiosxf.h
> +++ b/src/acpica/source/include/acpiosxf.h
> @@ -577,6 +577,7 @@ AcpiOsEnterSleep (
>   * Debug print routines
>   */
>  #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
> +ACPI_PRINTF_LIKE (1)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiOsPrintf (
>      const char              *Format,
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 2893bf23..a123eed7 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>  
>  /* Current ACPICA subsystem version in YYYYMMDD format */
>  
> -#define ACPI_CA_VERSION                 0x20190703
> +#define ACPI_CA_VERSION                 0x20190816
>  
>  #include "acconfig.h"
>  #include "actypes.h"
> @@ -446,6 +446,9 @@ ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
>  #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
>      ACPI_EXTERNAL_RETURN_OK(Prototype)
>  
> +#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
> +    ACPI_EXTERNAL_RETURN_UINT32(prototype)
> +
>  #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
>      ACPI_EXTERNAL_RETURN_VOID(Prototype)
>  
> @@ -456,6 +459,9 @@ ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
>  #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
>      static ACPI_INLINE Prototype {return(AE_OK);}
>  
> +#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
> +    static ACPI_INLINE prototype {return(0);}
> +
>  #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
>      static ACPI_INLINE Prototype {return;}
>  
> @@ -1076,6 +1082,12 @@ AcpiGetGpeStatus (
>      UINT32                  GpeNumber,
>      ACPI_EVENT_STATUS       *EventStatus))
>  
> +ACPI_HW_DEPENDENT_RETURN_UINT32 (
> +UINT32
> +AcpiDispatchGpe (
> +    ACPI_HANDLE             GpeDevice,
> +    UINT32                  GpeNumber))
> +
>  ACPI_HW_DEPENDENT_RETURN_STATUS (
>  ACPI_STATUS
>  AcpiDisableAllGpes (
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index a0b63ec4..f81c8a7d 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -327,9 +327,9 @@ typedef struct acpi_evaluate_info
>      UINT32                          ReturnFlags;        /* Used for return value analysis */
>      UINT32                          ReturnBtype;        /* Bitmapped type of the returned object */
>      UINT16                          ParamCount;         /* Count of the input argument list */
> +    UINT16                          NodeFlags;          /* Same as Node->Flags */
>      UINT8                           PassNumber;         /* Parser pass number */
>      UINT8                           ReturnObjectType;   /* Object type of the returned object */
> -    UINT8                           NodeFlags;          /* Same as Node->Flags */
>      UINT8                           Flags;              /* General flags */
>  
>  } ACPI_EVALUATE_INFO;
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index e7a2d578..0521f335 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -591,8 +591,8 @@ typedef void *                          ACPI_HANDLE;    /* Actually a ptr to a N
>  
>  /* Owner IDs are used to track namespace nodes for selective deletion */
>  
> -typedef UINT8                           ACPI_OWNER_ID;
> -#define ACPI_OWNER_ID_MAX               0xFF
> +typedef UINT16                          ACPI_OWNER_ID;
> +#define ACPI_OWNER_ID_MAX               0xFFF   /* 4095 possible owner IDs */
>  
>  
>  #define ACPI_INTEGER_BIT_SIZE           64
> @@ -657,7 +657,7 @@ typedef UINT64                          ACPI_INTEGER;
>  
>  /* Pointer/Integer type conversions */
>  
> -#define ACPI_TO_POINTER(i)              ACPI_ADD_PTR (void, (void *) 0, (ACPI_SIZE) (i))
> +#define ACPI_TO_POINTER(i)              ACPI_CAST_PTR (void, (ACPI_SIZE) (i))
>  #define ACPI_TO_INTEGER(p)              ACPI_PTR_DIFF (p, (void *) 0)
>  #define ACPI_OFFSET(d, f)               ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0)
>  #define ACPI_PHYSADDR_TO_PTR(i)         ACPI_TO_POINTER(i)
> @@ -1513,12 +1513,14 @@ typedef enum
>  #define ACPI_OSI_WIN_VISTA_SP2          0x0A
>  #define ACPI_OSI_WIN_7                  0x0B
>  #define ACPI_OSI_WIN_8                  0x0C
> -#define ACPI_OSI_WIN_10                 0x0D
> -#define ACPI_OSI_WIN_10_RS1             0x0E
> -#define ACPI_OSI_WIN_10_RS2             0x0F
> -#define ACPI_OSI_WIN_10_RS3             0x10
> -#define ACPI_OSI_WIN_10_RS4             0x11
> -#define ACPI_OSI_WIN_10_RS5             0x12
> +#define ACPI_OSI_WIN_8_1                0x0D
> +#define ACPI_OSI_WIN_10                 0x0E
> +#define ACPI_OSI_WIN_10_RS1             0x0F
> +#define ACPI_OSI_WIN_10_RS2             0x10
> +#define ACPI_OSI_WIN_10_RS3             0x11
> +#define ACPI_OSI_WIN_10_RS4             0x12
> +#define ACPI_OSI_WIN_10_RS5             0x13
> +#define ACPI_OSI_WIN_10_19H1            0x14
>  
>  
>  /* Definitions of getopt */
> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
> index 8f48d370..0c2327d2 100644
> --- a/src/acpica/source/include/acutils.h
> +++ b/src/acpica/source/include/acutils.h
> @@ -1194,30 +1194,33 @@ AcpiUtDeleteAddressLists (
>  /*
>   * utxferror - various error/warning output functions
>   */
> +ACPI_PRINTF_LIKE(5)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiUtPredefinedWarning (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...);
>  
> +ACPI_PRINTF_LIKE(5)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiUtPredefinedInfo (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...);
>  
> +ACPI_PRINTF_LIKE(5)
>  void ACPI_INTERNAL_VAR_XFACE
>  AcpiUtPredefinedBiosError (
>      const char              *ModuleName,
>      UINT32                  LineNumber,
>      char                    *Pathname,
> -    UINT8                   NodeFlags,
> +    UINT16                  NodeFlags,
>      const char              *Format,
>      ...);
>  
> diff --git a/src/libfwtsiasl/Makefile.am b/src/libfwtsiasl/Makefile.am
> index 4daa4fe6..9aa5523c 100644
> --- a/src/libfwtsiasl/Makefile.am
> +++ b/src/libfwtsiasl/Makefile.am
> @@ -64,6 +64,13 @@ $(srcdir)/aslcompiler.c $(srcdir)/aslcompiler.y.h: $(srcdir)/aslcompiler.y
>  	mv aslcompiler.tab.c aslcompiler.c
>  	mv aslcompiler.tab.h aslcompiler.y.h
>  
> +.NOTPARALLEL: $(srcdir)/dtcompilerparserlex.c
> +$(srcdir)/dtcompilerparserlex.c $(srcdir)/dtcompilerparser.c $(srcdir)/dtcompilerparser.y.h: ../acpica/source/compiler/dtcompilerparser.l ../acpica/source/compiler/dtcompilerparser.y
> +	${LEX} ${AM_LFLAGS} -PDtCompilerParser -o$(srcdir)/dtcompilerparserlex.c $<
> +	${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser ../acpica/source/compiler/dtcompilerparser.y
> +	mv dtcompilerparser.tab.c dtcompilerparser.c
> +	mv dtcompilerparser.tab.h dtcompilerparser.y.h
> +
>  .NOTPARALLEL: $(srcdir)/dtparserlex.c
>  $(srcdir)/dtparserlex.c $(srcdir)/dtparser.c $(srcdir)/dtparser.y.h: ../acpica/source/compiler/dtparser.l ../acpica/source/compiler/dtparser.y
>  	${LEX} ${AM_LFLAGS} -PDtParser -o$(srcdir)/dtparserlex.c $<
> @@ -84,6 +91,9 @@ BUILT_SOURCES = aslcompiler.y		\
>  		aslcompiler.y.h		\
>  		aslcompilerlex.c	\
>  		aslcompiler.c		\
> +		dtcompilerparser.y.h	\
> +		dtcompilerparserlex.c 	\
> +		dtcompilerparser.c	\
>  		dtparser.y.h		\
>  		dtparserlex.c 		\
>  		dtparser.c 		\
> @@ -103,6 +113,8 @@ libfwtsiasl_la_SOURCES = 					\
>  	fwts_iasl_interface.c 					\
>  	aslcompilerlex.c					\
>  	aslcompiler.c						\
> +	dtcompilerparserlex.c					\
> +	dtcompilerparser.c					\
>  	dtparserlex.c						\
>  	dtparser.c						\
>  	prparserlex.c						\


Acked-by: Ivan Hu <ivan.hu@canonical.com>

Patch
diff mbox series

diff --git a/src/acpica/source/common/adwalk.c b/src/acpica/source/common/adwalk.c
index d9bd4d9e..6da2e8ec 100644
--- a/src/acpica/source/common/adwalk.c
+++ b/src/acpica/source/common/adwalk.c
@@ -480,6 +480,7 @@  AcpiDmDumpDescending (
 {
     ACPI_OP_WALK_INFO       *Info = Context;
     char                    *Path;
+    ACPI_STATUS             Status;
 
 
     if (!Op)
@@ -522,10 +523,18 @@  AcpiDmDumpDescending (
 
         if (Op->Common.Value.String)
         {
-            AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
+            Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
                 NULL, &Path);
-            AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
-            ACPI_FREE (Path);
+            if (ACPI_SUCCESS (Status))
+            {
+                AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
+                ACPI_FREE (Path);
+            }
+            else
+            {
+                AcpiOsPrintf ("Could not externalize pathname for node [%4.4s]",
+                    Op->Common.Node->Name.Ascii);
+            }
         }
         else
         {
@@ -830,9 +839,9 @@  AcpiDmLoadDescendingOp (
          * 2) Not the root node
          * 3) Not a node created by Scope
          */
-
-        if (!PreDefined && Node != AcpiGbl_RootNode &&
-            Op->Common.AmlOpcode != AML_SCOPE_OP)
+        if (!PreDefined &&
+            (Node != AcpiGbl_RootNode) &&
+            (Op->Common.AmlOpcode != AML_SCOPE_OP))
         {
             Node->OwnerId = WalkState->OwnerId;
         }
diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
index 8ab92d71..072409f7 100644
--- a/src/acpica/source/common/dmrestag.c
+++ b/src/acpica/source/common/dmrestag.c
@@ -833,8 +833,12 @@  AcpiGetTagPathname (
 
     /* Internalize the namepath to AML format */
 
-    AcpiNsInternalizeName (Pathname, &InternalPath);
+    Status = AcpiNsInternalizeName (Pathname, &InternalPath);
     ACPI_FREE (Pathname);
+    if (ACPI_FAILURE (Status))
+    {
+        return (NULL);
+    }
 
     /* Update the Op with the symbol */
 
diff --git a/src/acpica/source/common/dmtables.c b/src/acpica/source/common/dmtables.c
index f9579509..a2dbea62 100644
--- a/src/acpica/source/common/dmtables.c
+++ b/src/acpica/source/common/dmtables.c
@@ -443,8 +443,8 @@  AdGetLocalTables (
     /* Get the DSDT via table override */
 
     ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
-    AcpiOsTableOverride (&TableHeader, &NewTable);
-    if (!NewTable)
+    Status = AcpiOsTableOverride (&TableHeader, &NewTable);
+    if (ACPI_FAILURE (Status) || !NewTable)
     {
         fprintf (stderr, "Could not obtain DSDT\n");
         return (AE_NO_ACPI_TABLES);
diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c
index a2d09b31..418b6ec0 100644
--- a/src/acpica/source/common/dmtbdump2.c
+++ b/src/acpica/source/common/dmtbdump2.c
@@ -871,7 +871,7 @@  AcpiDmDumpMcfg (
         if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
         {
             AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
-                sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
+                (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
             return;
         }
 
diff --git a/src/acpica/source/compiler/aslcache.c b/src/acpica/source/compiler/aslcache.c
index f8e7c658..132497b5 100644
--- a/src/acpica/source/compiler/aslcache.c
+++ b/src/acpica/source/compiler/aslcache.c
@@ -421,7 +421,7 @@  UtDeleteLocalCaches (
     DbgPrint (ASL_DEBUG_OUTPUT,
         "%u ParseOps, Buffer size: %u ops (%u bytes), %u Buffers\n",
         AslGbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE,
-        (sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
+        ((UINT32) sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
 
     /* Reset cache globals */
 
@@ -445,7 +445,7 @@  UtDeleteLocalCaches (
     DbgPrint (ASL_DEBUG_OUTPUT,
         "%u Fields, Buffer size: %u fields (%u bytes), %u Buffers\n",
         AslGbl_FieldCount, ASL_FIELD_CACHE_SIZE,
-        (sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
+        ((UINT32) sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
 
     /* Reset cache globals */
 
@@ -468,7 +468,7 @@  UtDeleteLocalCaches (
     DbgPrint (ASL_DEBUG_OUTPUT,
         "%u Subtables, Buffer size: %u subtables (%u bytes), %u Buffers\n",
         AslGbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE,
-        (sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
+        ((UINT32) sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
 
     /* Reset cache globals */
 
diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
index 54b5ac2c..86f85074 100644
--- a/src/acpica/source/compiler/aslcodegen.c
+++ b/src/acpica/source/compiler/aslcodegen.c
@@ -618,8 +618,8 @@  CgWriteTableHeader (
         Op->Asl.AmlSubtreeLength +=
             strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3;
 
-        CvDbgPrint ("     Length: %lu\n",
-            strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
+        CvDbgPrint ("     Length: %u\n",
+            (UINT32) strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
 
         if (Op->Asl.CommentList)
         {
diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
index 5f152dc9..9214cfdf 100644
--- a/src/acpica/source/compiler/aslcompile.c
+++ b/src/acpica/source/compiler/aslcompile.c
@@ -853,10 +853,11 @@  CmDumpAllEvents (
  *
  ******************************************************************************/
 
-void
+int
 CmCleanupAndExit (
     void)
 {
+    int                     Status = 0;
     BOOLEAN                 DeleteAmlFile = FALSE;
     ASL_GLOBAL_FILE_NODE    *CurrentFileNode = AslGbl_FilesList;
 
@@ -915,20 +916,38 @@  CmCleanupAndExit (
     UtDisplaySummary (ASL_FILE_STDOUT);
 
     /*
-     * We will delete the AML file if there are errors and the
-     * force AML output option has not been used.
+     * Delete the AML file if there are errors and the force AML output option
+     * (-f) has not been used.
+     *
+     * Return -1 as a status of the compiler if no AML files are generated. If
+     * the AML file is generated in the presence of errors, return 0. In the
+     * latter case, the errors were ignored by the user so the compilation is
+     * considered successful.
      */
-    if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly || ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
+    if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly ||
+        ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
         (!AslGbl_IgnoreErrors) &&
         AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle))
     {
         DeleteAmlFile = TRUE;
+        Status = -1;
     }
 
     /* Close all open files */
 
     while (CurrentFileNode)
     {
+        /*
+         * Set the program return status based on file errors. If there are any
+         * errors and during compilation, the command is not considered
+         * successful.
+         */
+        if (Status != -1 && !AslGbl_IgnoreErrors &&
+            CurrentFileNode->ParserErrorDetected)
+        {
+            Status = -1;
+        }
+
         switch  (FlSwitchFileSet (CurrentFileNode->Files[ASL_FILE_INPUT].Filename))
         {
             case SWITCH_TO_SAME_FILE:
@@ -952,6 +971,8 @@  CmCleanupAndExit (
     {
         UtDeleteLocalCaches ();
     }
+
+    return (Status);
 }
 
 
diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
index 5c4bdc17..01ab3924 100644
--- a/src/acpica/source/compiler/aslcompiler.h
+++ b/src/acpica/source/compiler/aslcompiler.h
@@ -266,7 +266,7 @@  void
 CmDoOutputFiles (
     void);
 
-void
+int
 CmCleanupAndExit (
     void);
 
@@ -1052,6 +1052,7 @@  void
 FlCloseFile (
     UINT32                  FileId);
 
+ACPI_PRINTF_LIKE (2)
 void
 FlPrintFile (
     UINT32                  FileId,
@@ -1195,6 +1196,7 @@  OtXrefWalkPart1 (
 /*
  * aslutils - common compiler utilities
  */
+ACPI_PRINTF_LIKE(2)
 void
 DbgPrint (
     UINT32                  Type,
@@ -1288,6 +1290,10 @@  UtInternalizeName (
     char                    *ExternalName,
     char                    **ConvertedName);
 
+BOOLEAN
+UtNameContainsAllPrefix (
+    ACPI_PARSE_OBJECT       *Op);
+
 void
 UtAttachNamepathToOwner (
     ACPI_PARSE_OBJECT       *Op,
@@ -1303,6 +1309,15 @@  UINT64
 UtDoConstant (
     char                    *String);
 
+char *
+AcpiUtStrdup (
+    char                    *String);
+
+char *
+AcpiUtStrcat (
+    char                    *String1,
+    char                    *String2);
+
 
 /*
  * asluuid - UUID support
@@ -1604,6 +1619,7 @@  DtCreateTemplates (
 /*
  * ASL/ASL+ converter debug
  */
+ACPI_PRINTF_LIKE (1)
 void
 CvDbgPrint (
     char                    *Fmt,
diff --git a/src/acpica/source/compiler/asldebug.c b/src/acpica/source/compiler/asldebug.c
index 2c1dab79..469a58e5 100644
--- a/src/acpica/source/compiler/asldebug.c
+++ b/src/acpica/source/compiler/asldebug.c
@@ -239,7 +239,7 @@  UtDumpIntegerOp (
     case 8: /* Dword */
 
         DbgPrint (ASL_TREE_OUTPUT,
-            "%*.*X", IntegerLength, IntegerLength, Op->Asl.Value.Integer);
+            "%*.*X", IntegerLength, IntegerLength, (UINT32) Op->Asl.Value.Integer);
         break;
 
     case 16: /* Qword and Integer */
diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
index c5111875..0ba08962 100644
--- a/src/acpica/source/compiler/asldefine.h
+++ b/src/acpica/source/compiler/asldefine.h
@@ -290,7 +290,7 @@ 
 
 #define ASL_PARSE_TREE_DEBUG2 \
     " %08X %04X %04X %01X     %04X  %04X %05X  %05X   "\
-    "%08X %08X %08X %08X %08X %08X %04X  %02d  %5d %5d %5d %5d"
+    "%8p %8p %8p %8p %08X %08X %04X  %02d  %5d %5d %5d %5d"
 
 /*
  * Macros for ASL/ASL+ converter
diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
index 740f7f34..9020c14d 100644
--- a/src/acpica/source/compiler/aslglobal.h
+++ b/src/acpica/source/compiler/aslglobal.h
@@ -244,7 +244,6 @@  extern const char                   *AslGbl_SpecialNamedObjects[MAX_SPECIAL_NAME
 #endif
 
 
-
 /*
  * Parser and other externals
  */
@@ -254,6 +253,7 @@  extern int                          DtParserdebug;
 extern int                          PrParserdebug;
 extern const ASL_MAPPING_ENTRY      AslKeywordMapping[];
 extern char                         *AslCompilertext;
+extern char                         *DtCompilerParsertext;
 
 /*
  * Older versions of Bison won't emit this external in the generated header.
diff --git a/src/acpica/source/compiler/aslhelp.c b/src/acpica/source/compiler/aslhelp.c
index f51b07f8..47d9d306 100644
--- a/src/acpica/source/compiler/aslhelp.c
+++ b/src/acpica/source/compiler/aslhelp.c
@@ -247,6 +247,7 @@  Usage (
     ACPI_OPTION ("",                "  (Original comments are passed through to ASL+ file)");
 
     printf ("\nData Table Compiler:\n");
+    ACPI_OPTION ("-tp",             "Compile tables with flex/bison prototype");
     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");
diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
index b9bb3d67..6778bf64 100644
--- a/src/acpica/source/compiler/asllength.c
+++ b/src/acpica/source/compiler/asllength.c
@@ -479,12 +479,13 @@  CgGenerateAmlLengths (
         Op->Asl.AmlLength = strlen (Buffer);
 
         /*
-         * Check for single backslash reference to root,
-         * make it a null terminated string in the AML
+         * Check for single backslash reference to root or reference to a name
+         * consisting of only prefix (^) characters. Make it a null terminated
+         * string in the AML.
          */
-        if (Op->Asl.AmlLength == 1)
+        if (Op->Asl.AmlLength == 1 || UtNameContainsAllPrefix(Op))
         {
-            Op->Asl.AmlLength = 2;
+            Op->Asl.AmlLength++;
         }
         break;
 
diff --git a/src/acpica/source/compiler/asllistsup.c b/src/acpica/source/compiler/asllistsup.c
index e54adb52..9663740a 100644
--- a/src/acpica/source/compiler/asllistsup.c
+++ b/src/acpica/source/compiler/asllistsup.c
@@ -241,7 +241,7 @@  LsDumpAsciiInComment (
             {
                 /* Insert a space to break the sequence */
 
-                FlPrintFile (FileId, ".", BufChar);
+                FlPrintFile (FileId, " ");
             }
 
             FlPrintFile (FileId, "%c", BufChar);
diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
index 4dd2dfd0..d918c0cc 100644
--- a/src/acpica/source/compiler/aslload.c
+++ b/src/acpica/source/compiler/aslload.c
@@ -275,7 +275,6 @@  LdLoadFieldElements (
     ACPI_STATUS             Status;
 
 
-
     SourceRegion = UtGetArg (Op, 0);
     if (SourceRegion)
     {
@@ -1031,7 +1030,8 @@  FinishNode:
  * DESCRIPTION: Check if certain named objects are declared in the incorrect
  *              scope. Special named objects are listed in
  *              AslGbl_SpecialNamedObjects and can only be declared at the root
- *              scope.
+ *              scope. _UID inside of a processor declaration must not be a
+ *              string.
  *
  ******************************************************************************/
 
@@ -1052,6 +1052,13 @@  LdCheckSpecialNames (
             return;
         }
     }
+
+    if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, "_UID") &&
+        Node->Parent->Type == ACPI_TYPE_PROCESSOR &&
+        Node->Type == ACPI_TYPE_STRING)
+    {
+        AslError (ASL_ERROR, ASL_MSG_INVALID_PROCESSOR_UID , Op, "found a string");
+    }
 }
 
 
diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
index 2afb20f6..605c412f 100644
--- a/src/acpica/source/compiler/aslmain.c
+++ b/src/acpica/source/compiler/aslmain.c
@@ -282,7 +282,6 @@  main (
         if (ACPI_FAILURE (Status))
         {
             ReturnStatus = -1;
-            goto CleanupAndExit;
         }
 
         Index2++;
@@ -290,9 +289,10 @@  main (
 
     /*
      * At this point, compilation of a data table or disassembly is complete.
+     * However, if there is a parse tree, perform compiler analysis and
+     * generate AML.
      */
-    if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag ||
-        AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
+    if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag || !AslGbl_ParseTreeRoot)
     {
         goto CleanupAndExit;
     }
@@ -338,7 +338,6 @@  main (
     }
 
 
-
 CleanupAndExit:
 
     UtFreeLineBuffers ();
@@ -350,7 +349,7 @@  CleanupAndExit:
 
     if (!AcpiGbl_DisasmFlag)
     {
-        CmCleanupAndExit ();
+        ReturnStatus = CmCleanupAndExit ();
     }
 
 
@@ -400,18 +399,21 @@  AslSignalHandler (
      * Close all open files
      * Note: the .pre file is the same as the input source file
      */
-    AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
-
-    for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
+    if (AslGbl_Files)
     {
-        FlCloseFile (i);
-    }
+        AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
 
-    /* Delete any output files */
+        for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
+        {
+            FlCloseFile (i);
+        }
 
-    for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
-    {
-        FlDeleteFile (i);
+        /* Delete any output files */
+
+        for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
+        {
+            FlDeleteFile (i);
+        }
     }
 
     printf (ASL_PREFIX "Terminating\n");
diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
index 48c4dbab..8dd989ca 100644
--- a/src/acpica/source/compiler/aslmessages.c
+++ b/src/acpica/source/compiler/aslmessages.c
@@ -366,7 +366,9 @@  const char                      *AslCompilerMsgs [] =
 /*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed",
 /*    ASL_MSG_UNDEFINED_EXTERNAL */         "Named object was declared external but the actual definition does not exist",
 /*    ASL_MSG_BUFFER_FIELD_OVERFLOW */      "Buffer field extends beyond end of target buffer",
-/*    ASL_MSG_INVALID_SPECIAL_NAME */       "declaration of this named object outside root scope is illegal"
+/*    ASL_MSG_INVALID_SPECIAL_NAME */       "declaration of this named object outside root scope is illegal",
+/*    ASL_MSG_INVALID_PROCESSOR_UID */      "_UID inside processor declaration must be an integer",
+/*    ASL_MSG_LEGACY_PROCESSOR_OP */        "Legacy Processor() keyword detected. Use Device() keyword instead."
 };
 
 /* Table compiler */
diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
index d998f0fe..55473fb5 100644
--- a/src/acpica/source/compiler/aslmessages.h
+++ b/src/acpica/source/compiler/aslmessages.h
@@ -369,6 +369,8 @@  typedef enum
     ASL_MSG_UNDEFINED_EXTERNAL,
     ASL_MSG_BUFFER_FIELD_OVERFLOW,
     ASL_MSG_INVALID_SPECIAL_NAME,
+    ASL_MSG_INVALID_PROCESSOR_UID,
+    ASL_MSG_LEGACY_PROCESSOR_OP,
 
     /* These messages are used by the Data Table compiler only */
 
diff --git a/src/acpica/source/compiler/aslnamesp.c b/src/acpica/source/compiler/aslnamesp.c
index a3c445af..b5af0cb3 100644
--- a/src/acpica/source/compiler/aslnamesp.c
+++ b/src/acpica/source/compiler/aslnamesp.c
@@ -276,7 +276,7 @@  NsDoOneNamespaceObject (
 
     FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u  [%u]  %*s %4.4s - %s",
         AslGbl_NumNamespaceObjects, Level, (Level * 3), " ",
-        &Node->Name, AcpiUtGetTypeName (Node->Type));
+        &Node->Name.Ascii[0], AcpiUtGetTypeName (Node->Type));
 
     Op = Node->Op;
     ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object);
@@ -429,7 +429,7 @@  NsDoOneNamespaceObject (
             {
                 FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
                     "       [Initial Length  0x%.2X elements]",
-                    Op->Asl.Value.Integer);
+                    (UINT32) Op->Asl.Value.Integer);
             }
             break;
 
@@ -452,7 +452,7 @@  NsDoOneNamespaceObject (
             {
                 FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
                     "        [Initial Length  0x%.2X bytes]",
-                    Op->Asl.Value.Integer);
+                    (UINT32) Op->Asl.Value.Integer);
             }
             break;
 
@@ -531,7 +531,8 @@  NsDoOnePathname (
         return (Status);
     }
 
-    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n", TargetPath.Pointer);
+    FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n",
+        ACPI_CAST_PTR (char, TargetPath.Pointer));
     ACPI_FREE (TargetPath.Pointer);
     return (AE_OK);
 }
diff --git a/src/acpica/source/compiler/asloptions.c b/src/acpica/source/compiler/asloptions.c
index dc00e1d2..7c178149 100644
--- a/src/acpica/source/compiler/asloptions.c
+++ b/src/acpica/source/compiler/asloptions.c
@@ -837,6 +837,11 @@  AslDoOptions (
             AslGbl_HexOutputFlag = HEX_OUTPUT_C;
             break;
 
+    case 'p': /* data table flex/bison prototype */
+
+            AslGbl_DtLexBisonPrototype = TRUE;
+            break;
+
         case 's':
 
             AslGbl_HexOutputFlag = HEX_OUTPUT_ASL;
diff --git a/src/acpica/source/compiler/aslparseop.c b/src/acpica/source/compiler/aslparseop.c
index 8fa99f3e..59a54864 100644
--- a/src/acpica/source/compiler/aslparseop.c
+++ b/src/acpica/source/compiler/aslparseop.c
@@ -403,22 +403,22 @@  TrCreateValuedLeafOp (
     {
     case PARSEOP_STRING_LITERAL:
 
-        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
+        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Op->Asl.Value.String);
         break;
 
     case PARSEOP_NAMESEG:
 
-        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
+        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
         break;
 
     case PARSEOP_NAMESTRING:
 
-        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
+        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
         break;
 
     case PARSEOP_EISAID:
 
-        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
+        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Op->Asl.Value.String);
         break;
 
     case PARSEOP_METHOD:
@@ -693,7 +693,8 @@  TrCreateConstantLeafOp (
     time_t                  CurrentTime;
     char                    *StaticTimeString;
     char                    *TimeString;
-    char                    *Filename;
+    char                    *Filename = NULL;
+    ACPI_STATUS             Status;
 
 
     switch (ParseOpcode)
@@ -727,7 +728,12 @@  TrCreateConstantLeafOp (
 
         /* Get the simple filename from the full path */
 
-        FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
+        Status = FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
+        if (ACPI_FAILURE (Status))
+        {
+            return (NULL);
+        }
+
         Op->Asl.Value.String = Filename;
         break;
 
diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
index 472f777c..c43c1a97 100644
--- a/src/acpica/source/compiler/aslstartup.c
+++ b/src/acpica/source/compiler/aslstartup.c
@@ -467,6 +467,7 @@  AslDoOneFile (
     /* Determine input file type */
 
     AslGbl_FileType = AslDetectSourceFileType (&AslGbl_Files[ASL_FILE_INPUT]);
+    FileNode->FileType = AslGbl_FileType;
     if (AslGbl_FileType == ASL_INPUT_TYPE_BINARY)
     {
         return (AE_ERROR);
diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
index 5237c638..7dc642d8 100644
--- a/src/acpica/source/compiler/asltransform.c
+++ b/src/acpica/source/compiler/asltransform.c
@@ -507,6 +507,12 @@  TrTransformSubtree (
         }
         break;
 
+    case PARSEOP_PROCESSOR:
+
+        AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName);
+
+        break;
+
     default:
 
         /* Nothing to do here for other opcodes */
diff --git a/src/acpica/source/compiler/asltypes.h b/src/acpica/source/compiler/asltypes.h
index 8a6a0750..2df31eab 100644
--- a/src/acpica/source/compiler/asltypes.h
+++ b/src/acpica/source/compiler/asltypes.h
@@ -505,9 +505,12 @@  typedef struct asl_files_node
     UINT32                  TotalLineCount;
     UINT32                  OriginalInputFileSize;
     UINT32                  TotalKeywords;
+    UINT32                  TotalFields;
+    UINT32                  OutputByteLength;
     UINT32                  TotalNamedObjects;
     UINT32                  TotalExecutableOpcodes;
     BOOLEAN                 ParserErrorDetected;
+    UINT8                   FileType;
 
 } ASL_GLOBAL_FILE_NODE;
 
diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
index 80149247..ed2948d0 100644
--- a/src/acpica/source/compiler/aslutils.c
+++ b/src/acpica/source/compiler/aslutils.c
@@ -223,6 +223,7 @@  UtQueryForOverwrite (
     char                    *Pathname)
 {
     struct stat             StatInfo;
+    int                     InChar = 0x34;
 
 
     if (!stat (Pathname, &StatInfo))
@@ -230,7 +231,13 @@  UtQueryForOverwrite (
         fprintf (stderr, "Target file \"%s\" already exists, overwrite? [y|n] ",
             Pathname);
 
-        if (getchar () != 'y')
+        InChar = fgetc (stdin);
+        if (InChar == '\n')
+        {
+            InChar = fgetc (stdin);
+        }
+
+        if ((InChar != 'y') && (InChar != 'Y'))
         {
             return (FALSE);
         }
@@ -559,58 +566,54 @@  UtDisplayOneSummary (
 
     /* Summary of main input and output files */
 
-    if (AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
+    FileNode = FlGetCurrentFileNode ();
+    if (!FileNode)
+    {
+        fprintf (stderr, "Summary could not be generated");
+        return;
+    }
+
+    if (FileNode->ParserErrorDetected)
+    {
+        FlPrintFile (FileId,
+            "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
+            "Input file:", AslGbl_Files[ASL_FILE_INPUT].Filename);
+    }
+    else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_DATA)
     {
         FlPrintFile (FileId,
-            "%-14s %s - %u lines, %u bytes, %u fields\n",
+            "%-14s %s - %7u bytes %6u fields %8u source lines\n",
             "Table Input:",
-            AslGbl_Files[ASL_FILE_INPUT].Filename, AslGbl_CurrentLineNumber,
-            AslGbl_InputByteCount, AslGbl_InputFieldCount);
+            AslGbl_Files[ASL_FILE_INPUT].Filename,
+            FileNode->OriginalInputFileSize, FileNode->TotalFields,
+            FileNode->TotalLineCount);
 
-        if ((AslGbl_ExceptionCount[ASL_ERROR] == 0) || (AslGbl_IgnoreErrors))
-        {
-            FlPrintFile (FileId,
-                "%-14s %s - %u bytes\n",
-                "Binary Output:",
-                AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, AslGbl_TableLength);
-        }
+        FlPrintFile (FileId,
+            "%-14s %s - %7u bytes\n",
+            "Binary Output:",
+            AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, FileNode->OutputByteLength);
     }
-    else
+    else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_ASL)
     {
-        FileNode = FlGetCurrentFileNode ();
-        if (!FileNode)
-        {
-            fprintf (stderr, "Summary could not be generated");
-            return;
-        }
-        if (FileNode->ParserErrorDetected)
-        {
-            FlPrintFile (FileId,
-                "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
-                "ASL Input:", AslGbl_Files[ASL_FILE_INPUT].Filename);
-        }
-        else
+        FlPrintFile (FileId,
+            "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
+            "ASL Input:",
+            AslGbl_Files[ASL_FILE_INPUT].Filename,
+            FileNode->OriginalInputFileSize,
+            FileNode->TotalKeywords,
+            FileNode->TotalLineCount);
+
+        /* AML summary */
+
+        if (DisplayAMLSummary)
         {
             FlPrintFile (FileId,
-                "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
-                "ASL Input:",
-                AslGbl_Files[ASL_FILE_INPUT].Filename,
-                FileNode->OriginalInputFileSize,
-                FileNode->TotalKeywords,
-                FileNode->TotalLineCount);
-
-            /* AML summary */
-
-            if (DisplayAMLSummary)
-            {
-                FlPrintFile (FileId,
-                    "%-14s %s - %7u bytes %6u opcodes  %6u named objects\n",
-                    "AML Output:",
-                    AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
-                    FlGetFileSize (ASL_FILE_AML_OUTPUT),
-                    FileNode->TotalExecutableOpcodes,
-                    FileNode->TotalNamedObjects);
-            }
+                "%-14s %s - %7u bytes %6u opcodes  %6u named objects\n",
+                "AML Output:",
+                AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
+                FlGetFileSize (ASL_FILE_AML_OUTPUT),
+                FileNode->TotalExecutableOpcodes,
+                FileNode->TotalNamedObjects);
         }
     }
 
@@ -992,6 +995,37 @@  UtAttachNamepathToOwner (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    UtNameContainsAllPrefix
+ *
+ * PARAMETERS:  Op                  - Op containing NameString
+ *
+ * RETURN:      NameString consists of all ^ characters
+ *
+ * DESCRIPTION: Determine if this Op contains a name segment that consists of
+ *              all '^' characters.
+ *
+ ******************************************************************************/
+
+BOOLEAN
+UtNameContainsAllPrefix (
+    ACPI_PARSE_OBJECT       *Op)
+{
+    UINT32                  Length = Op->Asl.AmlLength;
+    UINT32                  i;
+
+    for (i = 0; i < Length; i++)
+    {
+        if (Op->Asl.Value.String[i] != '^')
+        {
+            return (FALSE);
+        }
+    }
+
+    return (TRUE);
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    UtDoConstant
@@ -1026,3 +1060,56 @@  UtDoConstant (
 
     return (ConvertedInteger);
 }
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiUtStrdup
+ *
+ * PARAMETERS:  String1             - string to duplicate
+ *
+ * RETURN:      int that signifies string relationship. Zero means strings
+ *              are equal.
+ *
+ * DESCRIPTION: Duplicate the string using UtCacheAlloc to avoid manual memory
+ *              reclamation.
+ *
+ ******************************************************************************/
+
+char *
+AcpiUtStrdup (
+    char                    *String)
+{
+    char                    *NewString = (char *) UtLocalCalloc (strlen (String) + 1);
+
+
+    strcpy (NewString, String);
+    return (NewString);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiUtStrcat
+ *
+ * PARAMETERS:  String1
+ *              String2
+ *
+ * RETURN:      New string with String1 concatenated with String2
+ *
+ * DESCRIPTION: Concatenate string1 and string2
+ *
+ ******************************************************************************/
+
+char *
+AcpiUtStrcat (
+    char                    *String1,
+    char                    *String2)
+{
+    UINT32                  String1Length = strlen (String1);
+    char                    *NewString = (char *) UtLocalCalloc (strlen (String1) + strlen (String2) + 1);
+
+    strcpy (NewString, String1);
+    strcpy (NewString + String1Length, String2);
+    return (NewString);
+}
diff --git a/src/acpica/source/compiler/aslxrefout.c b/src/acpica/source/compiler/aslxrefout.c
index 2bd43a07..ce8c8ddd 100644
--- a/src/acpica/source/compiler/aslxrefout.c
+++ b/src/acpica/source/compiler/aslxrefout.c
@@ -799,7 +799,7 @@  OtXrefWalkPart3 (
     else
     {
         FlPrintFile (ASL_FILE_XREF_OUTPUT,
-            "            %u references to this object in this module\n",
+            "            %u references to this object in this module [%s]\n",
             XrefInfo->ThisObjectReferences, ParentPath);
     }
 
diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
index 09cb3e6c..b6a144fe 100644
--- a/src/acpica/source/compiler/dtcompile.c
+++ b/src/acpica/source/compiler/dtcompile.c
@@ -161,7 +161,7 @@  static char                 VersionString[9];
 
 /* Local prototypes */
 
-static ACPI_STATUS
+void
 DtInitialize (
     void);
 
@@ -196,16 +196,12 @@  DtDoCompile (
     ACPI_STATUS             Status;
     UINT8                   Event;
     DT_FIELD                *FieldList;
+    ASL_GLOBAL_FILE_NODE    *FileNode;
 
 
     /* Initialize globals */
 
-    Status = DtInitialize ();
-    if (ACPI_FAILURE (Status))
-    {
-        printf ("Error during compiler initialization, 0x%X\n", Status);
-        return (Status);
-    }
+    DtInitialize ();
 
     /* Preprocessor */
 
@@ -223,13 +219,29 @@  DtDoCompile (
         }
     }
 
-    /*
-     * Scan the input file (file is already open) and
-     * build the parse tree
-     */
-    Event = UtBeginEvent ("Scan and parse input file");
-    FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
-    UtEndEvent (Event);
+    /* Compile the parse tree */
+
+    if (AslGbl_DtLexBisonPrototype)
+    {
+        Event = UtBeginEvent ("Parse data table in prototype mode");
+
+        DtCompilerInitLexer (AslGbl_Files[ASL_FILE_INPUT].Handle);
+        DtCompilerParserparse ();
+        FieldList = AslGbl_FieldList;
+        DtCompilerTerminateLexer ();
+
+        UtEndEvent (Event);
+    }
+    else
+    {
+        /*
+         * Scan the input file (file is already open) and
+         * build the parse tree
+         */
+        Event = UtBeginEvent ("Scan and parse input file");
+        FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
+        UtEndEvent (Event);
+    }
 
     /* Did the parse tree get successfully constructed? */
 
@@ -245,14 +257,27 @@  DtDoCompile (
 
     Event = UtBeginEvent ("Compile parse tree");
 
-    /*
-     * Compile the parse tree
-     */
     Status = DtCompileDataTable (&FieldList);
     UtEndEvent (Event);
 
+    FileNode = FlGetCurrentFileNode ();
+    if (!FileNode)
+    {
+        fprintf (stderr, "Summary for %s could not be generated",
+            AslGbl_Files[ASL_FILE_INPUT].Filename);
+    }
+    else
+    {
+        FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
+        FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
+        DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
+                FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
+    }
+
     if (ACPI_FAILURE (Status))
     {
+        FileNode->ParserErrorDetected = TRUE;
+
         /* TBD: temporary error message. Msgs should come from function above */
 
         DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
@@ -276,6 +301,14 @@  DtDoCompile (
     HxDoHexOutput ();
     DtWriteTableToListing ();
 
+    /* Save the compile time statistics to the current file node */
+
+    if (FileNode)
+    {
+        FileNode->TotalFields = AslGbl_InputFieldCount;
+        FileNode->OutputByteLength = AslGbl_TableLength;
+    }
+
     return (Status);
 }
 
@@ -293,25 +326,12 @@  DtDoCompile (
  *
  *****************************************************************************/
 
-static ACPI_STATUS
+void
 DtInitialize (
     void)
 {
-    ACPI_STATUS             Status;
 
 
-    Status = AcpiOsInitialize ();
-    if (ACPI_FAILURE (Status))
-    {
-        return (Status);
-    }
-
-    Status = AcpiUtInitGlobals ();
-    if (ACPI_FAILURE (Status))
-    {
-        return (Status);
-    }
-
     AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */
 
     AslGbl_FieldList = NULL;
@@ -319,7 +339,7 @@  DtInitialize (
     AslGbl_SubtableStack = NULL;
 
     sprintf (VersionString, "%X", (UINT32) ACPI_CA_VERSION);
-    return (AE_OK);
+    return;
 }
 
 
diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
index ffa17f63..639c22cb 100644
--- a/src/acpica/source/compiler/dtcompiler.h
+++ b/src/acpica/source/compiler/dtcompiler.h
@@ -194,7 +194,7 @@  typedef struct dt_field
 {
     char                    *Name;       /* Field name (from name : value) */
     char                    *Value;      /* Field value (from name : value) */
-    UINT32                  StringLength;/* Length of Value */
+    UINT32                  StringLength; /* Length of Value */
     struct dt_field         *Next;       /* Next field */
     struct dt_field         *NextLabel;  /* If field is a label, next label */
     UINT32                  Line;        /* Line number for this field */
@@ -256,6 +256,10 @@  DT_EXTERN DT_FIELD          DT_INIT_GLOBAL (*AslGbl_LabelList, NULL);
 
 DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_CurrentTableOffset, 0);
 
+/* Data table compiler Flex/Bison prototype */
+
+DT_EXTERN BOOLEAN           DT_INIT_GLOBAL (AslGbl_DtLexBisonPrototype, FALSE);
+
 /* Local caches */
 
 DT_EXTERN UINT32            DT_INIT_GLOBAL (AslGbl_SubtableCount, 0);
@@ -288,6 +292,14 @@  DtCompilePadding (
     UINT32                  Length,
     DT_SUBTABLE             **RetSubtable);
 
+void
+DtCreateField (
+    char                    *Name,
+    char                    *Value,
+    UINT32                  Line,
+    UINT32                  Offset,
+    UINT32                  Column,
+    UINT32                  NameColumn);
 
 /* dtio - binary and text input/output */
 
@@ -427,10 +439,23 @@  DtCompileFlag (
 
 /* dtparser - lex/yacc files */
 
+UINT64                      DtCompilerParserResult; /* Expression return value */
+int
+DtCompilerParserparse (
+    void);
+
 UINT64
 DtEvaluateExpression (
     char                    *ExprString);
 
+void
+DtCompilerInitLexer (
+    FILE                    *inFile);
+
+void
+DtCompilerTerminateLexer (
+    void);
+
 int
 DtInitLexer (
     char                    *String);
diff --git a/src/acpica/source/compiler/dtcompilerparser.l b/src/acpica/source/compiler/dtcompilerparser.l
new file mode 100644
index 00000000..0d68f41e
--- /dev/null
+++ b/src/acpica/source/compiler/dtcompilerparser.l
@@ -0,0 +1,288 @@ 
+%{
+/******************************************************************************
+ *
+ * Module Name: dtcompilerparser.l - Flex input file for table compiler lexer
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2018, 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.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include "aslcompiler.h"
+#include "dtcompilerparser.y.h"
+
+YYSTYPE DtCompilerlval;
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("dtcompilerscanner")
+
+/* handle locations */
+
+int DtCompilerParsercolumn = 1;
+int DtCompilerParserByteOffset = 0;
+
+#define YY_USER_ACTION \
+            DtCompilerParserlloc.first_line = DtCompilerParserlloc.last_line = DtCompilerParserlineno; \
+            DtCompilerParserlloc.first_column = DtCompilerParsercolumn; \
+            DtCompilerParserlloc.first_byte_offset = DtCompilerParserByteOffset; \
+            DtCompilerParserlloc.last_column = DtCompilerParsercolumn + DtCompilerParserleng-1; \
+            DtCompilerParsercolumn += DtCompilerParserleng; \
+            DtCompilerParserByteOffset += DtCompilerParserleng; \
+            DbgPrint (ASL_PARSE_OUTPUT,\
+                "user action occurred. DtCompilerParserlloc.first_line: %u offset: %u\n",\
+                DtCompilerParserlloc.first_line, DtCompilerParserlloc.first_byte_offset);
+%}
+
+%option nounput noinput yylineno
+
+    /* Indicates a state used for parsing multiline C comments */
+%x ML_COMMENT
+%x DATA_STATE
+
+WhiteSpace      [ \t\v\r]+
+NewLines        [\n]+
+
+    /* Avoid ", \n, and [] as a part of label name. These are not valid characters of a label name */
+LabelName       [^ ":\n\[\]]([^":\n\[\]]*[^" :\n\[\]])?
+
+    /* Avoid ", \n, \\, and [] as a part of data. These are not valid characters of data */
+Data            [^ \\":\n\[\]]([^":\n\[\]\\]*[^" :\n\[\]\\])?
+
+Text            [^ ":\n][^":\n]*
+Comment         \[[^\n\[\]]*\]
+CommentField    {LabelName}{WhiteSpace}*:{WhiteSpace}{Comment}?$
+
+
+%%
+
+<DATA_STATE>{WhiteSpace}"\\\n" {
+        DbgPrint(ASL_PARSE_OUTPUT,"Continuation matched\n");
+        return (DT_PARSEOP_LINE_CONTINUATION);
+    }
+
+":" {
+        DbgPrint(ASL_PARSE_OUTPUT, ": Matched\n");
+        BEGIN (DATA_STATE);
+        return (':');
+    }
+
+<INITIAL,DATA_STATE>{WhiteSpace} { DbgPrint(ASL_PARSE_OUTPUT,"Whitespace matched\n"); }
+
+<INITIAL,DATA_STATE>{Comment}    { DbgPrint(ASL_PARSE_OUTPUT,"Comment matched\n"); }
+
+"/*"                     { BEGIN (ML_COMMENT); }
+<ML_COMMENT>"*/"         { BEGIN (INITIAL); }
+<ML_COMMENT>"*/\n"       { BEGIN (INITIAL); }
+<ML_COMMENT>([^*]|\n)+|. /* Ignore */
+"//".*                   /* Ignore */
+
+
+<DATA_STATE>{Data} {
+      char *s;
+      int size = strlen (DtCompilerParsertext);
+      s=UtLocalCacheCalloc (size + 1);
+      AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
+      DtCompilerParserlval.s = s;
+      DbgPrint (ASL_PARSE_OUTPUT, "Data: %s\n", s);
+      return (DT_PARSEOP_DATA);
+}
+
+{CommentField}  /* ignore */
+
+{LabelName} {
+    char *s;
+    int size = strlen (DtCompilerParsertext);
+    s=UtLocalCacheCalloc (size + 1);
+    AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
+    DtCompilerParserlval.s = s;
+    DbgPrint (ASL_PARSE_OUTPUT, "Label: %s\n", s);
+    return (DT_PARSEOP_LABEL);
+}
+
+
+<DATA_STATE>\"{Text}?\" { // remove outer quotes from the string, they are unnecessary
+    char *s;
+    int size = strlen (DtCompilerParsertext);
+    s=UtLocalCacheCalloc (size - 1);
+    AcpiUtSafeStrncpy (s, DtCompilerParsertext + 1, size - 1);
+    DtCompilerParserlval.s = s;
+    DbgPrint (ASL_PARSE_OUTPUT, "String Data: %s\n", s);
+    BEGIN (INITIAL);
+    return (DT_PARSEOP_STRING_DATA);
+}
+
+
+<INITIAL,DATA_STATE>{NewLines} {
+    DbgPrint(ASL_PARSE_OUTPUT,
+        "Newline matched (data state). Current line number: %u\n",DtCompilerParserlineno);
+    BEGIN (INITIAL); DtCompilerParsercolumn = 1;
+}
+
+
+%%
+
+
+/*
+ * Local support functions
+ */
+
+void
+DtCompilerInitLexer (
+    FILE                *inFile)
+{
+    yyin = inFile;
+}
+
+void
+DtCompilerTerminateLexer (
+    void)
+{
+    /*
+     * Flex/Bison increments the lineno for the EOF so decrement by 1 to get
+     * the correct number of lines.
+     */
+    AslGbl_CurrentLineNumber = DtCompilerParserlineno - 1;
+    AslGbl_InputByteCount = DtCompilerParserByteOffset;
+}
diff --git a/src/acpica/source/compiler/dtcompilerparser.y b/src/acpica/source/compiler/dtcompilerparser.y
new file mode 100644
index 00000000..ba9d2827
--- /dev/null
+++ b/src/acpica/source/compiler/dtcompilerparser.y
@@ -0,0 +1,287 @@ 
+%{
+/******************************************************************************
+ *
+ * Module Name: dtcompilerparser.y - Bison input file for table compiler parser
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2018, 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.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include "aslcompiler.h"
+
+
+#define _COMPONENT          DT_COMPILER
+        ACPI_MODULE_NAME    ("dtcompilerparser")
+
+void *                      AslLocalAllocate (unsigned int Size);
+
+/* Bison/yacc configuration */
+
+#undef alloca
+#define alloca              AslLocalAllocate
+
+int                         DtCompilerParserlex (void);
+int                         DtCompilerParserparse (void);
+void                        DtCompilerParsererror (char const *msg);
+extern char                 *DtCompilerParsertext;
+extern DT_FIELD             *AslGbl_CurrentField;
+
+extern UINT64               DtCompilerParserResult; /* Expression return value */
+extern UINT64               DtCompilerParserlineno; /* Current line number */
+
+/* Bison/yacc configuration */
+
+#define yytname             DtCompilerParsername
+#define YYDEBUG             1               /* Enable debug output */
+#define YYERROR_VERBOSE     1               /* Verbose error messages */
+#define YYFLAG              -32768
+
+/* Define YYMALLOC/YYFREE to prevent redefinition errors  */
+
+#define YYMALLOC            malloc
+#define YYFREE              free
+
+%}
+
+%code requires {
+
+    typedef struct YYLTYPE {
+        int first_line;
+        int last_line;
+        int first_column;
+        int last_column;
+        int first_byte_offset;
+    } YYLTYPE;
+
+    #define YYLTYPE_IS_DECLARED 1
+}
+
+
+%union {
+    char                *s;
+    DT_FIELD            *f;
+}
+
+
+%type  <f> Table
+%token <s> DT_PARSEOP_DATA
+%token <s> DT_PARSEOP_LABEL
+%token <s> DT_PARSEOP_STRING_DATA
+%token <s> DT_PARSEOP_LINE_CONTINUATION
+%type  <s> Data
+%type  <s> Datum
+%type  <s> MultiLineData
+%type  <s> MultiLineDataList
+
+
+%%
+
+Table
+    :
+    FieldList { DtCompilerParserResult = 5;}
+    ;
+
+FieldList
+    : Field FieldList
+    | Field
+    ;
+
+Field
+    : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, (@3).first_line, (@1).first_byte_offset, (@1).first_column, (@3).first_column); }
+    ;
+
+Data
+    : MultiLineDataList        { $$ = $1; }
+    | Datum                    { $$ = $1; }
+    | Datum MultiLineDataList  { $$ = $1; } /* combine the string with strcat */
+    ;
+
+MultiLineDataList
+    : MultiLineDataList MultiLineData { $$ = AcpiUtStrcat(AcpiUtStrcat($1, " "), $2); } /* combine the strings with strcat */
+    | MultiLineData                   { $$ = $1; }
+    ;
+
+MultiLineData
+    : DT_PARSEOP_LINE_CONTINUATION Datum { DbgPrint (ASL_PARSE_OUTPUT, "line continuation detected\n"); $$ = $2; }
+    ;
+
+Datum
+    : DT_PARSEOP_DATA        { DbgPrint (ASL_PARSE_OUTPUT, "parser        data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
+    | DT_PARSEOP_STRING_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
+    ;
+
+
+%%
+
+
+/*
+ * Local support functions, including parser entry point
+ */
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompilerParsererror
+ *
+ * PARAMETERS:  Message             - Parser-generated error message
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Handler for parser errors
+ *
+ *****************************************************************************/
+
+void
+DtCompilerParsererror (
+    char const              *Message)
+{
+    DtError (ASL_ERROR, ASL_MSG_SYNTAX,
+        AslGbl_CurrentField, (char *) Message);
+}
+
+int
+DtCompilerParserwrap(void)
+{
+  return (1);
+}
diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
index 74ebf570..1f716761 100644
--- a/src/acpica/source/compiler/dtfield.c
+++ b/src/acpica/source/compiler/dtfield.c
@@ -280,7 +280,9 @@  DtCompileString (
 
     if (Length > ByteLength)
     {
-        sprintf (AslGbl_MsgBuffer, "Maximum %u characters", ByteLength);
+        sprintf (AslGbl_MsgBuffer,
+            "Maximum %u characters, found %u characters [%s]",
+            ByteLength, Length, Field->Value);
         DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
         Length = ByteLength;
     }
diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
index ae827513..d027353c 100644
--- a/src/acpica/source/compiler/dtio.c
+++ b/src/acpica/source/compiler/dtio.c
@@ -493,6 +493,59 @@  DtParseLine (
 }
 
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCreateField
+ *
+ * PARAMETERS: Name
+ *             Value
+ *             Line
+ *             Offset
+ *             Column
+ *             NameColumn
+ *
+ * RETURN:     None
+ *
+ * DESCRIPTION: Create a field
+ *
+ *****************************************************************************/
+
+void
+DtCreateField (
+    char                    *Name,
+    char                    *Value,
+    UINT32                  Line,
+    UINT32                  Offset,
+    UINT32                  Column,
+    UINT32                  NameColumn)
+{
+    DT_FIELD                *Field = UtFieldCacheCalloc ();
+
+
+    Field->StringLength = 0;
+    if (Name)
+    {
+        Field->Name =
+            strcpy (UtLocalCacheCalloc (strlen (Name) + 1), Name);
+    }
+
+    if (Value)
+    {
+        Field->StringLength = strlen (Value);
+        Field->Value =
+            strcpy (UtLocalCacheCalloc (Field->StringLength + 1), Value);
+    }
+
+    Field->Line = Line;
+    Field->ByteOffset = Offset;
+    Field->NameColumn = NameColumn;
+    Field->Column = Column;
+    DtLinkField (Field);
+
+    DtDumpFieldList (AslGbl_FieldList);
+}
+
+
 /******************************************************************************
  *
  * FUNCTION:    DtGetNextLine
@@ -1117,7 +1170,7 @@  DtDumpSubtableInfo (
 {
 
     DbgPrint (ASL_DEBUG_OUTPUT,
-        "[%.04X] %24s %.08X %.08X %.08X %.08X %.08X %p %p %p\n",
+        "[%.04X] %24s %.08X %.08X %.08X %.08X %p %p %p %p\n",
         Subtable->Depth, Subtable->Name, Subtable->Length, Subtable->TotalLength,
         Subtable->SizeOfLengthField, Subtable->Flags, Subtable,
         Subtable->Parent, Subtable->Child, Subtable->Peer);
@@ -1131,7 +1184,7 @@  DtDumpSubtableTree (
 {
 
     DbgPrint (ASL_DEBUG_OUTPUT,
-        "[%.04X] %24s %*s%08X (%.02X) - (%.02X)\n",
+        "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n",
         Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ",
         Subtable, Subtable->Length, Subtable->TotalLength);
 }
@@ -1225,7 +1278,7 @@  DtWriteFieldToListing (
     if (strlen (Field->Value) > 64)
     {
         FlPrintFile (ASL_FILE_LISTING_OUTPUT, "...Additional data, length 0x%X\n",
-            strlen (Field->Value));
+            (UINT32) strlen (Field->Value));
     }
 
     FlPrintFile (ASL_FILE_LISTING_OUTPUT, "\n");
diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
index 2dc09334..72b14101 100644
--- a/src/acpica/source/compiler/dtparser.l
+++ b/src/acpica/source/compiler/dtparser.l
@@ -227,7 +227,6 @@  int
 DtInitLexer (
     char                    *String)
 {
-
     LexBuffer = yy_scan_string (String);
     return (LexBuffer == NULL);
 }
@@ -236,6 +235,5 @@  void
 DtTerminateLexer (
     void)
 {
-
     yy_delete_buffer (LexBuffer);
 }
diff --git a/src/acpica/source/compiler/dttemplate.c b/src/acpica/source/compiler/dttemplate.c
index 4cc6c040..a53b9521 100644
--- a/src/acpica/source/compiler/dttemplate.c
+++ b/src/acpica/source/compiler/dttemplate.c
@@ -509,7 +509,7 @@  DtCreateOneTemplate (
     AcpiUtStrlwr (DisasmFilename);
     if (!UtQueryForOverwrite (DisasmFilename))
     {
-        return (AE_ERROR);
+        return (AE_OK);
     }
 
     File = fopen (DisasmFilename, "w+");
diff --git a/src/acpica/source/compiler/prmacros.c b/src/acpica/source/compiler/prmacros.c
index e3ee5beb..14be2a75 100644
--- a/src/acpica/source/compiler/prmacros.c
+++ b/src/acpica/source/compiler/prmacros.c
@@ -223,7 +223,7 @@  PrAddDefine (
     DefineInfo = PrMatchDefine (Identifier);
     if (DefineInfo)
     {
-        DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID,
+        DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
             "#define: name already exists: %s\n",
             AslGbl_CurrentLineNumber, Identifier);
 
diff --git a/src/acpica/source/compiler/prscan.c b/src/acpica/source/compiler/prscan.c
index 9138ba5d..109da26a 100644
--- a/src/acpica/source/compiler/prscan.c
+++ b/src/acpica/source/compiler/prscan.c
@@ -850,7 +850,7 @@  PrDoDirective (
 
         DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID
             "Start #include file \"%s\"\n", AslGbl_CurrentLineNumber,
-            Token, AslGbl_CurrentLineNumber);
+            Token);
 
         PrDoIncludeFile (Token);
         break;
@@ -1356,7 +1356,7 @@  PrDoIncludeBuffer (
     {
         if (!(i % 8))
         {
-            FlPrintFile (ASL_FILE_PREPROCESSOR, "\n   ", c);
+            FlPrintFile (ASL_FILE_PREPROCESSOR, "\n   ");
         }
 
         FlPrintFile (ASL_FILE_PREPROCESSOR, " 0x%2.2X,", c);
@@ -1369,6 +1369,6 @@  PrDoIncludeBuffer (
 
     /* Close the Name() operator */
 
-    FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n", BufferName);
+    FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n");
     fclose (BinaryBufferFile);
 }
diff --git a/src/acpica/source/components/debugger/dbhistry.c b/src/acpica/source/components/debugger/dbhistry.c
index 6136c801..06971915 100644
--- a/src/acpica/source/components/debugger/dbhistry.c
+++ b/src/acpica/source/components/debugger/dbhistry.c
@@ -284,7 +284,7 @@  AcpiDbDisplayHistory (
     {
         if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
         {
-            AcpiOsPrintf ("%3ld  %s\n",
+            AcpiOsPrintf ("%3u  %s\n",
                 AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
                 AcpiGbl_HistoryBuffer[HistoryIndex].Command);
         }
diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
index d2e54b4e..d091d351 100644
--- a/src/acpica/source/components/debugger/dbinput.c
+++ b/src/acpica/source/components/debugger/dbinput.c
@@ -785,7 +785,7 @@  AcpiDbGetLine (
     {
         AcpiOsPrintf (
             "Buffer overflow while parsing input line (max %u characters)\n",
-            sizeof (AcpiGbl_DbParsedBuf));
+            (UINT32) sizeof (AcpiGbl_DbParsedBuf));
         return (0);
     }
 
@@ -1060,10 +1060,10 @@  AcpiDbCommandDispatch (
         if (ParamCount == 0)
         {
             AcpiOsPrintf (
-                "Current debug level for file output is:    %8.8lX\n",
+                "Current debug level for file output is:    %8.8X\n",
                 AcpiGbl_DbDebugLevel);
             AcpiOsPrintf (
-                "Current debug level for console output is: %8.8lX\n",
+                "Current debug level for console output is: %8.8X\n",
                 AcpiGbl_DbConsoleDebugLevel);
         }
         else if (ParamCount == 2)
@@ -1072,7 +1072,7 @@  AcpiDbCommandDispatch (
             AcpiGbl_DbConsoleDebugLevel =
                 strtoul (AcpiGbl_DbArgs[1], NULL, 16);
             AcpiOsPrintf (
-                "Debug Level for console output was %8.8lX, now %8.8lX\n",
+                "Debug Level for console output was %8.8X, now %8.8X\n",
                 Temp, AcpiGbl_DbConsoleDebugLevel);
         }
         else
@@ -1080,7 +1080,7 @@  AcpiDbCommandDispatch (
             Temp = AcpiGbl_DbDebugLevel;
             AcpiGbl_DbDebugLevel = strtoul (AcpiGbl_DbArgs[1], NULL, 16);
             AcpiOsPrintf (
-                "Debug Level for file output was %8.8lX, now %8.8lX\n",
+                "Debug Level for file output was %8.8X, now %8.8X\n",
                 Temp, AcpiGbl_DbDebugLevel);
         }
         break;
diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
index 983faae0..6893c550 100644
--- a/src/acpica/source/components/debugger/dbmethod.c
+++ b/src/acpica/source/components/debugger/dbmethod.c
@@ -493,6 +493,11 @@  AcpiDbDisassembleMethod (
     }
 
     Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId);
+    if (ACPI_FAILURE(Status))
+    {
+        return (Status);
+    }
+
     WalkState->OwnerId = ObjDesc->Method.OwnerId;
 
     /* Push start scope on scope stack and make it current */
diff --git a/src/acpica/source/components/debugger/dbstats.c b/src/acpica/source/components/debugger/dbstats.c
index 06729cca..1293759d 100644
--- a/src/acpica/source/components/debugger/dbstats.c
+++ b/src/acpica/source/components/debugger/dbstats.c
@@ -544,14 +544,14 @@  AcpiDbDisplayStatistics (
 
         for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)
         {
-            AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),
+            AcpiOsPrintf ("%16.16s %10u %10u\n", AcpiUtGetTypeName (i),
                 AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);
         }
 
-        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown",
+        AcpiOsPrintf ("%16.16s %10u %10u\n", "Misc/Unknown",
             AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc);
 
-        AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:",
+        AcpiOsPrintf ("%16.16s %10u %10u\n", "TOTALS:",
             AcpiGbl_NumNodes, AcpiGbl_NumObjects);
         break;
 
@@ -577,17 +577,15 @@  AcpiDbDisplayStatistics (
     case CMD_STAT_MISC:
 
         AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
-        AcpiOsPrintf ("Calls to AcpiPsFind:..  ........% 7ld\n",
+        AcpiOsPrintf ("%-28s:       %7u\n", "Calls to AcpiPsFind",
             AcpiGbl_PsFindCount);
-        AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
+        AcpiOsPrintf ("%-28s:       %7u\n", "Calls to AcpiNsLookup",
             AcpiGbl_NsLookupCount);
 
-        AcpiOsPrintf ("\n");
-
-        AcpiOsPrintf ("Mutex usage:\n\n");
+        AcpiOsPrintf ("\nMutex usage:\n\n");
         for (i = 0; i < ACPI_NUM_MUTEX; i++)
         {
-            AcpiOsPrintf ("%-28s:       % 7ld\n",
+            AcpiOsPrintf ("%-28s:       %7u\n",
                 AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
         }
         break;
@@ -596,50 +594,50 @@  AcpiDbDisplayStatistics (
 
         AcpiOsPrintf ("\nInternal object sizes:\n\n");
 
-        AcpiOsPrintf ("Common           %3d\n", sizeof (ACPI_OBJECT_COMMON));
-        AcpiOsPrintf ("Number           %3d\n", sizeof (ACPI_OBJECT_INTEGER));
-        AcpiOsPrintf ("String           %3d\n", sizeof (ACPI_OBJECT_STRING));
-        AcpiOsPrintf ("Buffer           %3d\n", sizeof (ACPI_OBJECT_BUFFER));
-        AcpiOsPrintf ("Package          %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
-        AcpiOsPrintf ("BufferField      %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
-        AcpiOsPrintf ("Device           %3d\n", sizeof (ACPI_OBJECT_DEVICE));
-        AcpiOsPrintf ("Event            %3d\n", sizeof (ACPI_OBJECT_EVENT));
-        AcpiOsPrintf ("Method           %3d\n", sizeof (ACPI_OBJECT_METHOD));
-        AcpiOsPrintf ("Mutex            %3d\n", sizeof (ACPI_OBJECT_MUTEX));
-        AcpiOsPrintf ("Region           %3d\n", sizeof (ACPI_OBJECT_REGION));
-        AcpiOsPrintf ("PowerResource    %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
-        AcpiOsPrintf ("Processor        %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
-        AcpiOsPrintf ("ThermalZone      %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
-        AcpiOsPrintf ("RegionField      %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
-        AcpiOsPrintf ("BankField        %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
-        AcpiOsPrintf ("IndexField       %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
-        AcpiOsPrintf ("Reference        %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
-        AcpiOsPrintf ("Notify           %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
-        AcpiOsPrintf ("AddressSpace     %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
-        AcpiOsPrintf ("Extra            %3d\n", sizeof (ACPI_OBJECT_EXTRA));
-        AcpiOsPrintf ("Data             %3d\n", sizeof (ACPI_OBJECT_DATA));
+        AcpiOsPrintf ("Common           %3d\n", (UINT32) sizeof (ACPI_OBJECT_COMMON));
+        AcpiOsPrintf ("Number           %3d\n", (UINT32) sizeof (ACPI_OBJECT_INTEGER));
+        AcpiOsPrintf ("String           %3d\n", (UINT32) sizeof (ACPI_OBJECT_STRING));
+        AcpiOsPrintf ("Buffer           %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER));
+        AcpiOsPrintf ("Package          %3d\n", (UINT32) sizeof (ACPI_OBJECT_PACKAGE));
+        AcpiOsPrintf ("BufferField      %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER_FIELD));
+        AcpiOsPrintf ("Device           %3d\n", (UINT32) sizeof (ACPI_OBJECT_DEVICE));
+        AcpiOsPrintf ("Event            %3d\n", (UINT32) sizeof (ACPI_OBJECT_EVENT));
+        AcpiOsPrintf ("Method           %3d\n", (UINT32) sizeof (ACPI_OBJECT_METHOD));
+        AcpiOsPrintf ("Mutex            %3d\n", (UINT32) sizeof (ACPI_OBJECT_MUTEX));
+        AcpiOsPrintf ("Region           %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION));
+        AcpiOsPrintf ("PowerResource    %3d\n", (UINT32) sizeof (ACPI_OBJECT_POWER_RESOURCE));
+        AcpiOsPrintf ("Processor        %3d\n", (UINT32) sizeof (ACPI_OBJECT_PROCESSOR));
+        AcpiOsPrintf ("ThermalZone      %3d\n", (UINT32) sizeof (ACPI_OBJECT_THERMAL_ZONE));
+        AcpiOsPrintf ("RegionField      %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION_FIELD));
+        AcpiOsPrintf ("BankField        %3d\n", (UINT32) sizeof (ACPI_OBJECT_BANK_FIELD));
+        AcpiOsPrintf ("IndexField       %3d\n", (UINT32) sizeof (ACPI_OBJECT_INDEX_FIELD));
+        AcpiOsPrintf ("Reference        %3d\n", (UINT32) sizeof (ACPI_OBJECT_REFERENCE));
+        AcpiOsPrintf ("Notify           %3d\n", (UINT32) sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
+        AcpiOsPrintf ("AddressSpace     %3d\n", (UINT32) sizeof (ACPI_OBJECT_ADDR_HANDLER));
+        AcpiOsPrintf ("Extra            %3d\n", (UINT32) sizeof (ACPI_OBJECT_EXTRA));
+        AcpiOsPrintf ("Data             %3d\n", (UINT32) sizeof (ACPI_OBJECT_DATA));
 
         AcpiOsPrintf ("\n");
 
-        AcpiOsPrintf ("ParseObject      %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
-        AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
-        AcpiOsPrintf ("ParseObjectAsl   %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
-        AcpiOsPrintf ("OperandObject    %3d\n", sizeof (ACPI_OPERAND_OBJECT));
-        AcpiOsPrintf ("NamespaceNode    %3d\n", sizeof (ACPI_NAMESPACE_NODE));
-        AcpiOsPrintf ("AcpiObject       %3d\n", sizeof (ACPI_OBJECT));
+        AcpiOsPrintf ("ParseObject      %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_COMMON));
+        AcpiOsPrintf ("ParseObjectNamed %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_NAMED));
+        AcpiOsPrintf ("ParseObjectAsl   %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_ASL));
+        AcpiOsPrintf ("OperandObject    %3d\n", (UINT32) sizeof (ACPI_OPERAND_OBJECT));
+        AcpiOsPrintf ("NamespaceNode    %3d\n", (UINT32) sizeof (ACPI_NAMESPACE_NODE));
+        AcpiOsPrintf ("AcpiObject       %3d\n", (UINT32) sizeof (ACPI_OBJECT));
 
         AcpiOsPrintf ("\n");
 
-        AcpiOsPrintf ("Generic State    %3d\n", sizeof (ACPI_GENERIC_STATE));
-        AcpiOsPrintf ("Common State     %3d\n", sizeof (ACPI_COMMON_STATE));
-        AcpiOsPrintf ("Control State    %3d\n", sizeof (ACPI_CONTROL_STATE));
-        AcpiOsPrintf ("Update State     %3d\n", sizeof (ACPI_UPDATE_STATE));
-        AcpiOsPrintf ("Scope State      %3d\n", sizeof (ACPI_SCOPE_STATE));
-        AcpiOsPrintf ("Parse Scope      %3d\n", sizeof (ACPI_PSCOPE_STATE));
-        AcpiOsPrintf ("Package State    %3d\n", sizeof (ACPI_PKG_STATE));
-        AcpiOsPrintf ("Thread State     %3d\n", sizeof (ACPI_THREAD_STATE));
-        AcpiOsPrintf ("Result Values    %3d\n", sizeof (ACPI_RESULT_VALUES));
-        AcpiOsPrintf ("Notify Info      %3d\n", sizeof (ACPI_NOTIFY_INFO));
+        AcpiOsPrintf ("Generic State    %3d\n", (UINT32) sizeof (ACPI_GENERIC_STATE));
+        AcpiOsPrintf ("Common State     %3d\n", (UINT32) sizeof (ACPI_COMMON_STATE));
+        AcpiOsPrintf ("Control State    %3d\n", (UINT32) sizeof (ACPI_CONTROL_STATE));
+        AcpiOsPrintf ("Update State     %3d\n", (UINT32) sizeof (ACPI_UPDATE_STATE));
+        AcpiOsPrintf ("Scope State      %3d\n", (UINT32) sizeof (ACPI_SCOPE_STATE));
+        AcpiOsPrintf ("Parse Scope      %3d\n", (UINT32) sizeof (ACPI_PSCOPE_STATE));
+        AcpiOsPrintf ("Package State    %3d\n", (UINT32) sizeof (ACPI_PKG_STATE));
+        AcpiOsPrintf ("Thread State     %3d\n", (UINT32) sizeof (ACPI_THREAD_STATE));
+        AcpiOsPrintf ("Result Values    %3d\n", (UINT32) sizeof (ACPI_RESULT_VALUES));
+        AcpiOsPrintf ("Notify Info      %3d\n", (UINT32) sizeof (ACPI_NOTIFY_INFO));
         break;
 
     case CMD_STAT_STACK:
diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
index a7ee84c9..50b17c00 100644
--- a/src/acpica/source/components/events/evgpe.c
+++ b/src/acpica/source/components/events/evgpe.c
@@ -848,6 +848,15 @@  AcpiEvDetectGpe (
 
     Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
 
+    if (!GpeEventInfo)
+    {
+        GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber);
+        if (!GpeEventInfo)
+        {
+            goto ErrorExit;
+        }
+    }
+
     /* Get the info block for the entire GPE register */
 
     GpeRegisterInfo = GpeEventInfo->RegisterInfo;
diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
index 1dc0fe1d..e1481fdf 100644
--- a/src/acpica/source/components/events/evxfgpe.c
+++ b/src/acpica/source/components/events/evxfgpe.c
@@ -875,6 +875,33 @@  UnlockAndExit:
 ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDispatchGpe
+ *
+ * PARAMETERS:  GpeDevice           - Parent GPE Device. NULL for GPE0/GPE1
+ *              GpeNumber           - GPE level within the GPE block
+ *
+ * RETURN:      INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
+ *
+ * DESCRIPTION: Detect and dispatch a General Purpose Event to either a function
+ *              (e.g. EC) or method (e.g. _Lxx/_Exx) handler.
+ *
+ ******************************************************************************/
+
+UINT32
+AcpiDispatchGpe(
+    ACPI_HANDLE             GpeDevice,
+    UINT32                  GpeNumber)
+{
+    ACPI_FUNCTION_TRACE(acpi_dispatch_gpe);
+
+    return (AcpiEvDetectGpe (GpeDevice, NULL, GpeNumber));
+}
+
+ACPI_EXPORT_SYMBOL (AcpiDispatchGpe)
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiFinishGpe
diff --git a/src/acpica/source/components/executer/exconfig.c b/src/acpica/source/components/executer/exconfig.c
index eba1a6d2..1e3576ca 100644
--- a/src/acpica/source/components/executer/exconfig.c
+++ b/src/acpica/source/components/executer/exconfig.c
@@ -344,7 +344,9 @@  AcpiExLoadTableOp (
 
     /* Complete the initialization/resolution of new objects */
 
-    AcpiNsInitializeObjects ();
+    AcpiExExitInterpreter();
+    AcpiNsInitializeObjects();
+    AcpiExEnterInterpreter();
 
     /* Parameter Data (optional) */
 
diff --git a/src/acpica/source/components/executer/exdump.c b/src/acpica/source/components/executer/exdump.c
index fa70b410..b6b70e67 100644
--- a/src/acpica/source/components/executer/exdump.c
+++ b/src/acpica/source/components/executer/exdump.c
@@ -255,7 +255,7 @@  static ACPI_EXDUMP_INFO     AcpiExDumpMethod[9] =
     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ParamCount),            "Parameter Count"},
     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.SyncLevel),             "Sync Level"},
     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.Mutex),                 "Mutex"},
-    {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
+    {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ThreadCount),           "Thread Count"},
     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Method.AmlLength),             "Aml Length"},
     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.AmlStart),              "Aml Start"}
@@ -422,8 +422,8 @@  static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
 static ACPI_EXDUMP_INFO     AcpiExDumpNode[7] =
 {
     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
-    {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
-    {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
+    {ACPI_EXD_UINT16,   ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
+    {ACPI_EXD_UINT16,   ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
     {ACPI_EXD_LIST,     ACPI_EXD_NSOFFSET (Object),                     "Object List"},
     {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Parent),                     "Parent"},
     {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Child),                      "Child"},
diff --git a/src/acpica/source/components/namespace/nsaccess.c b/src/acpica/source/components/namespace/nsaccess.c
index 4be555c0..a4db29ee 100644
--- a/src/acpica/source/components/namespace/nsaccess.c
+++ b/src/acpica/source/components/namespace/nsaccess.c
@@ -767,7 +767,7 @@  AcpiNsLookup (
                 if (Flags & ACPI_NS_PREFIX_MUST_EXIST)
                 {
                     AcpiOsPrintf (ACPI_MSG_BIOS_ERROR
-                        "Object does not exist: %4.4s\n", &SimpleName);
+                        "Object does not exist: %4.4s\n", (char *) &SimpleName);
                 }
 #endif
                 /* Name not found in ACPI namespace */
diff --git a/src/acpica/source/components/namespace/nsalloc.c b/src/acpica/source/components/namespace/nsalloc.c
index 12772308..15fa2766 100644
--- a/src/acpica/source/components/namespace/nsalloc.c
+++ b/src/acpica/source/components/namespace/nsalloc.c
@@ -423,7 +423,7 @@  AcpiNsInstallNode (
     Node->Type = (UINT8) Type;
 
     ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
-        "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n",
+        "%4.4s (%s) [Node %p Owner %3.3X] added to %4.4s (%s) [Node %p]\n",
         AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId,
         AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type),
         ParentNode));
diff --git a/src/acpica/source/components/namespace/nsdump.c b/src/acpica/source/components/namespace/nsdump.c
index 6ea04525..8a2a7e92 100644
--- a/src/acpica/source/components/namespace/nsdump.c
+++ b/src/acpica/source/components/namespace/nsdump.c
@@ -381,7 +381,7 @@  AcpiNsDumpOneObject (
 
     /* Now we can print out the pertinent information */
 
-    AcpiOsPrintf (" %-12s %p %2.2X ",
+    AcpiOsPrintf (" %-12s %p %3.3X ",
         AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId);
 
     DbgLevel = AcpiDbgLevel;
diff --git a/src/acpica/source/components/namespace/nsrepair2.c b/src/acpica/source/components/namespace/nsrepair2.c
index a0b10747..302faade 100644
--- a/src/acpica/source/components/namespace/nsrepair2.c
+++ b/src/acpica/source/components/namespace/nsrepair2.c
@@ -289,7 +289,7 @@  static const ACPI_REPAIR_INFO       AcpiNsRepairableNames[] =
 
 #define ACPI_FDE_FIELD_COUNT        5
 #define ACPI_FDE_BYTE_BUFFER_SIZE   5
-#define ACPI_FDE_DWORD_BUFFER_SIZE  (ACPI_FDE_FIELD_COUNT * sizeof (UINT32))
+#define ACPI_FDE_DWORD_BUFFER_SIZE  (ACPI_FDE_FIELD_COUNT * (UINT32) sizeof (UINT32))
 
 
 /******************************************************************************
diff --git a/src/acpica/source/components/tables/tbdata.c b/src/acpica/source/components/tables/tbdata.c
index ba0c9108..84dd25bd 100644
--- a/src/acpica/source/components/tables/tbdata.c
+++ b/src/acpica/source/components/tables/tbdata.c
@@ -973,6 +973,7 @@  AcpiTbDeleteNamespaceByOwner (
     {
         return_ACPI_STATUS (Status);
     }
+
     AcpiNsDeleteNamespaceByOwner (OwnerId);
     AcpiUtReleaseWriteLock (&AcpiGbl_NamespaceRwLock);
     return_ACPI_STATUS (Status);
diff --git a/src/acpica/source/components/utilities/utdebug.c b/src/acpica/source/components/utilities/utdebug.c
index 5049f6bf..f00b91ad 100644
--- a/src/acpica/source/components/utilities/utdebug.c
+++ b/src/acpica/source/components/utilities/utdebug.c
@@ -322,7 +322,7 @@  AcpiDebugPrint (
      * Display the module name, current line number, thread ID (if requested),
      * current procedure nesting level, and the current procedure name
      */
-    AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber);
+    AcpiOsPrintf ("%9s-%04d ", ModuleName, LineNumber);
 
 #ifdef ACPI_APPLICATION
     /*
@@ -343,7 +343,7 @@  AcpiDebugPrint (
         FillCount = 0;
     }
 
-    AcpiOsPrintf ("[%02ld] %*s",
+    AcpiOsPrintf ("[%02d] %*s",
         AcpiGbl_NestingLevel, AcpiGbl_NestingLevel + 1, " ");
     AcpiOsPrintf ("%s%*s: ",
         AcpiUtTrimFunctionName (FunctionName), FillCount, " ");
diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
index 624c034c..8fcc4c23 100644
--- a/src/acpica/source/components/utilities/uterror.c
+++ b/src/acpica/source/components/utilities/uterror.c
@@ -188,7 +188,7 @@  AcpiUtPredefinedWarning (
     const char              *ModuleName,
     UINT32                  LineNumber,
     char                    *Pathname,
-    UINT8                   NodeFlags,
+    UINT16                  NodeFlags,
     const char              *Format,
     ...)
 {
@@ -237,7 +237,7 @@  AcpiUtPredefinedInfo (
     const char              *ModuleName,
     UINT32                  LineNumber,
     char                    *Pathname,
-    UINT8                   NodeFlags,
+    UINT16                  NodeFlags,
     const char              *Format,
     ...)
 {
@@ -286,7 +286,7 @@  AcpiUtPredefinedBiosError (
     const char              *ModuleName,
     UINT32                  LineNumber,
     char                    *Pathname,
-    UINT8                   NodeFlags,
+    UINT16                  NodeFlags,
     const char              *Format,
     ...)
 {
diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
index 1413b979..51ccc8bf 100644
--- a/src/acpica/source/components/utilities/utosi.c
+++ b/src/acpica/source/components/utilities/utosi.c
@@ -212,13 +212,14 @@  static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
     {"Windows 2006 SP2",    NULL, 0, ACPI_OSI_WIN_VISTA_SP2},    /* Windows Vista SP2 - Added 09/2010 */
     {"Windows 2009",        NULL, 0, ACPI_OSI_WIN_7},            /* Windows 7 and Server 2008 R2 - Added 09/2009 */
     {"Windows 2012",        NULL, 0, ACPI_OSI_WIN_8},            /* Windows 8 and Server 2012 - Added 08/2012 */
-    {"Windows 2013",        NULL, 0, ACPI_OSI_WIN_8},            /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
+    {"Windows 2013",        NULL, 0, ACPI_OSI_WIN_8_1},          /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
     {"Windows 2015",        NULL, 0, ACPI_OSI_WIN_10},           /* Windows 10 - Added 03/2015 */
     {"Windows 2016",        NULL, 0, ACPI_OSI_WIN_10_RS1},       /* Windows 10 version 1607 - Added 12/2017 */
     {"Windows 2017",        NULL, 0, ACPI_OSI_WIN_10_RS2},       /* Windows 10 version 1703 - Added 12/2017 */
     {"Windows 2017.2",      NULL, 0, ACPI_OSI_WIN_10_RS3},       /* Windows 10 version 1709 - Added 02/2018 */
     {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 version 1803 - Added 11/2018 */
     {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
+    {"Windows 2019",        NULL, 0, ACPI_OSI_WIN_10_19H1},      /* Windows 10 version 1903 - Added 08/2019 */
 
     /* Feature Group Strings */
 
diff --git a/src/acpica/source/components/utilities/utownerid.c b/src/acpica/source/components/utilities/utownerid.c
index 64a11389..ade51c8a 100644
--- a/src/acpica/source/components/utilities/utownerid.c
+++ b/src/acpica/source/components/utilities/utownerid.c
@@ -190,7 +190,7 @@  AcpiUtAllocateOwnerId (
     if (*OwnerId)
     {
         ACPI_ERROR ((AE_INFO,
-            "Owner ID [0x%2.2X] already exists", *OwnerId));
+            "Owner ID [0x%3.3X] already exists", *OwnerId));
         return_ACPI_STATUS (AE_ALREADY_EXISTS);
     }
 
@@ -246,13 +246,13 @@  AcpiUtAllocateOwnerId (
                 /*
                  * Construct encoded ID from the index and bit position
                  *
-                 * Note: Last [j].k (bit 255) is never used and is marked
+                 * Note: Last [j].k (bit 4095) is never used and is marked
                  * permanently allocated (prevents +1 overflow)
                  */
                 *OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j));
 
                 ACPI_DEBUG_PRINT ((ACPI_DB_VALUES,
-                    "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId));
+                    "Allocated OwnerId: 0x%3.3X\n", (unsigned int) *OwnerId));
                 goto Exit;
             }
         }
@@ -272,7 +272,7 @@  AcpiUtAllocateOwnerId (
      */
     Status = AE_OWNER_ID_LIMIT;
     ACPI_ERROR ((AE_INFO,
-        "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT"));
+        "Could not allocate new OwnerId (4095 max), AE_OWNER_ID_LIMIT"));
 
 Exit:
     (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
@@ -315,7 +315,7 @@  AcpiUtReleaseOwnerId (
 
     if (OwnerId == 0)
     {
-        ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%2.2X", OwnerId));
+        ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%3.3X", OwnerId));
         return_VOID;
     }
 
@@ -345,7 +345,7 @@  AcpiUtReleaseOwnerId (
     else
     {
         ACPI_ERROR ((AE_INFO,
-            "Release of non-allocated OwnerId: 0x%2.2X", OwnerId + 1));
+            "Attempted release of non-allocated OwnerId: 0x%3.3X", OwnerId + 1));
     }
 
     (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
index e93cfe1e..50bfe0b9 100644
--- a/src/acpica/source/include/acconfig.h
+++ b/src/acpica/source/include/acconfig.h
@@ -239,9 +239,9 @@ 
 
 #define ACPI_DEFAULT_PAGE_SIZE          4096    /* Must be power of 2 */
 
-/* OwnerId tracking. 8 entries allows for 255 OwnerIds */
+/* OwnerId tracking. 128 entries allows for 4095 OwnerIds */
 
-#define ACPI_NUM_OWNERID_MASKS          8
+#define ACPI_NUM_OWNERID_MASKS          128
 
 /* Size of the root table array is increased by this increment */
 
diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
index e1ed0053..c3703c15 100644
--- a/src/acpica/source/include/aclocal.h
+++ b/src/acpica/source/include/aclocal.h
@@ -295,12 +295,12 @@  typedef struct acpi_namespace_node
     union acpi_operand_object       *Object;        /* Interpreter object */
     UINT8                           DescriptorType; /* Differentiate object descriptor types */
     UINT8                           Type;           /* ACPI Type associated with this name */
-    UINT8                           Flags;          /* Miscellaneous flags */
-    ACPI_OWNER_ID                   OwnerId;        /* Node creator */
+    UINT16                          Flags;          /* Miscellaneous flags */
     ACPI_NAME_UNION                 Name;           /* ACPI Name, always 4 chars per ACPI spec */
     struct acpi_namespace_node      *Parent;        /* Parent node */
     struct acpi_namespace_node      *Child;         /* First child */
     struct acpi_namespace_node      *Peer;          /* First peer */
+    ACPI_OWNER_ID                   OwnerId;        /* Node creator */
 
     /*
      * The following fields are used by the ASL compiler and disassembler only
diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
index b9b30200..74feb8d9 100644
--- a/src/acpica/source/include/acobject.h
+++ b/src/acpica/source/include/acobject.h
@@ -333,8 +333,8 @@  typedef struct acpi_object_method
     } Dispatch;
 
     UINT32                          AmlLength;
-    UINT8                           ThreadCount;
     ACPI_OWNER_ID                   OwnerId;
+    UINT8                           ThreadCount;
 
 } ACPI_OBJECT_METHOD;
 
diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
index 19eef638..dfcd008f 100644
--- a/src/acpica/source/include/acpiosxf.h
+++ b/src/acpica/source/include/acpiosxf.h
@@ -577,6 +577,7 @@  AcpiOsEnterSleep (
  * Debug print routines
  */
 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
+ACPI_PRINTF_LIKE (1)
 void ACPI_INTERNAL_VAR_XFACE
 AcpiOsPrintf (
     const char              *Format,
diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
index 2893bf23..a123eed7 100644
--- a/src/acpica/source/include/acpixf.h
+++ b/src/acpica/source/include/acpixf.h
@@ -154,7 +154,7 @@ 
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20190703
+#define ACPI_CA_VERSION                 0x20190816
 
 #include "acconfig.h"
 #include "actypes.h"
@@ -446,6 +446,9 @@  ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
     ACPI_EXTERNAL_RETURN_OK(Prototype)
 
+#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
+    ACPI_EXTERNAL_RETURN_UINT32(prototype)
+
 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
     ACPI_EXTERNAL_RETURN_VOID(Prototype)
 
@@ -456,6 +459,9 @@  ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
     static ACPI_INLINE Prototype {return(AE_OK);}
 
+#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
+    static ACPI_INLINE prototype {return(0);}
+
 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
     static ACPI_INLINE Prototype {return;}
 
@@ -1076,6 +1082,12 @@  AcpiGetGpeStatus (
     UINT32                  GpeNumber,
     ACPI_EVENT_STATUS       *EventStatus))
 
+ACPI_HW_DEPENDENT_RETURN_UINT32 (
+UINT32
+AcpiDispatchGpe (
+    ACPI_HANDLE             GpeDevice,
+    UINT32                  GpeNumber))
+
 ACPI_HW_DEPENDENT_RETURN_STATUS (
 ACPI_STATUS
 AcpiDisableAllGpes (
diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
index a0b63ec4..f81c8a7d 100644
--- a/src/acpica/source/include/acstruct.h
+++ b/src/acpica/source/include/acstruct.h
@@ -327,9 +327,9 @@  typedef struct acpi_evaluate_info
     UINT32                          ReturnFlags;        /* Used for return value analysis */
     UINT32                          ReturnBtype;        /* Bitmapped type of the returned object */
     UINT16                          ParamCount;         /* Count of the input argument list */
+    UINT16                          NodeFlags;          /* Same as Node->Flags */
     UINT8                           PassNumber;         /* Parser pass number */
     UINT8                           ReturnObjectType;   /* Object type of the returned object */
-    UINT8                           NodeFlags;          /* Same as Node->Flags */
     UINT8                           Flags;              /* General flags */
 
 } ACPI_EVALUATE_INFO;
diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
index e7a2d578..0521f335 100644
--- a/src/acpica/source/include/actypes.h
+++ b/src/acpica/source/include/actypes.h
@@ -591,8 +591,8 @@  typedef void *                          ACPI_HANDLE;    /* Actually a ptr to a N
 
 /* Owner IDs are used to track namespace nodes for selective deletion */
 
-typedef UINT8                           ACPI_OWNER_ID;
-#define ACPI_OWNER_ID_MAX               0xFF
+typedef UINT16                          ACPI_OWNER_ID;
+#define ACPI_OWNER_ID_MAX               0xFFF   /* 4095 possible owner IDs */
 
 
 #define ACPI_INTEGER_BIT_SIZE           64
@@ -657,7 +657,7 @@  typedef UINT64                          ACPI_INTEGER;
 
 /* Pointer/Integer type conversions */
 
-#define ACPI_TO_POINTER(i)              ACPI_ADD_PTR (void, (void *) 0, (ACPI_SIZE) (i))
+#define ACPI_TO_POINTER(i)              ACPI_CAST_PTR (void, (ACPI_SIZE) (i))
 #define ACPI_TO_INTEGER(p)              ACPI_PTR_DIFF (p, (void *) 0)
 #define ACPI_OFFSET(d, f)               ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0)
 #define ACPI_PHYSADDR_TO_PTR(i)         ACPI_TO_POINTER(i)
@@ -1513,12 +1513,14 @@  typedef enum
 #define ACPI_OSI_WIN_VISTA_SP2          0x0A
 #define ACPI_OSI_WIN_7                  0x0B
 #define ACPI_OSI_WIN_8                  0x0C
-#define ACPI_OSI_WIN_10                 0x0D
-#define ACPI_OSI_WIN_10_RS1             0x0E
-#define ACPI_OSI_WIN_10_RS2             0x0F
-#define ACPI_OSI_WIN_10_RS3             0x10
-#define ACPI_OSI_WIN_10_RS4             0x11
-#define ACPI_OSI_WIN_10_RS5             0x12
+#define ACPI_OSI_WIN_8_1                0x0D
+#define ACPI_OSI_WIN_10                 0x0E
+#define ACPI_OSI_WIN_10_RS1             0x0F
+#define ACPI_OSI_WIN_10_RS2             0x10
+#define ACPI_OSI_WIN_10_RS3             0x11
+#define ACPI_OSI_WIN_10_RS4             0x12
+#define ACPI_OSI_WIN_10_RS5             0x13
+#define ACPI_OSI_WIN_10_19H1            0x14
 
 
 /* Definitions of getopt */
diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
index 8f48d370..0c2327d2 100644
--- a/src/acpica/source/include/acutils.h
+++ b/src/acpica/source/include/acutils.h
@@ -1194,30 +1194,33 @@  AcpiUtDeleteAddressLists (
 /*
  * utxferror - various error/warning output functions
  */
+ACPI_PRINTF_LIKE(5)
 void ACPI_INTERNAL_VAR_XFACE
 AcpiUtPredefinedWarning (
     const char              *ModuleName,
     UINT32                  LineNumber,
     char                    *Pathname,
-    UINT8                   NodeFlags,
+    UINT16                  NodeFlags,
     const char              *Format,
     ...);
 
+ACPI_PRINTF_LIKE(5)
 void ACPI_INTERNAL_VAR_XFACE
 AcpiUtPredefinedInfo (
     const char              *ModuleName,
     UINT32                  LineNumber,
     char                    *Pathname,
-    UINT8                   NodeFlags,
+    UINT16                  NodeFlags,
     const char              *Format,
     ...);
 
+ACPI_PRINTF_LIKE(5)
 void ACPI_INTERNAL_VAR_XFACE
 AcpiUtPredefinedBiosError (
     const char              *ModuleName,
     UINT32                  LineNumber,
     char                    *Pathname,
-    UINT8                   NodeFlags,
+    UINT16                  NodeFlags,
     const char              *Format,
     ...);
 
diff --git a/src/libfwtsiasl/Makefile.am b/src/libfwtsiasl/Makefile.am
index 4daa4fe6..9aa5523c 100644
--- a/src/libfwtsiasl/Makefile.am
+++ b/src/libfwtsiasl/Makefile.am
@@ -64,6 +64,13 @@  $(srcdir)/aslcompiler.c $(srcdir)/aslcompiler.y.h: $(srcdir)/aslcompiler.y
 	mv aslcompiler.tab.c aslcompiler.c
 	mv aslcompiler.tab.h aslcompiler.y.h
 
+.NOTPARALLEL: $(srcdir)/dtcompilerparserlex.c
+$(srcdir)/dtcompilerparserlex.c $(srcdir)/dtcompilerparser.c $(srcdir)/dtcompilerparser.y.h: ../acpica/source/compiler/dtcompilerparser.l ../acpica/source/compiler/dtcompilerparser.y
+	${LEX} ${AM_LFLAGS} -PDtCompilerParser -o$(srcdir)/dtcompilerparserlex.c $<
+	${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser ../acpica/source/compiler/dtcompilerparser.y
+	mv dtcompilerparser.tab.c dtcompilerparser.c
+	mv dtcompilerparser.tab.h dtcompilerparser.y.h
+
 .NOTPARALLEL: $(srcdir)/dtparserlex.c
 $(srcdir)/dtparserlex.c $(srcdir)/dtparser.c $(srcdir)/dtparser.y.h: ../acpica/source/compiler/dtparser.l ../acpica/source/compiler/dtparser.y
 	${LEX} ${AM_LFLAGS} -PDtParser -o$(srcdir)/dtparserlex.c $<
@@ -84,6 +91,9 @@  BUILT_SOURCES = aslcompiler.y		\
 		aslcompiler.y.h		\
 		aslcompilerlex.c	\
 		aslcompiler.c		\
+		dtcompilerparser.y.h	\
+		dtcompilerparserlex.c 	\
+		dtcompilerparser.c	\
 		dtparser.y.h		\
 		dtparserlex.c 		\
 		dtparser.c 		\
@@ -103,6 +113,8 @@  libfwtsiasl_la_SOURCES = 					\
 	fwts_iasl_interface.c 					\
 	aslcompilerlex.c					\
 	aslcompiler.c						\
+	dtcompilerparserlex.c					\
+	dtcompilerparser.c					\
 	dtparserlex.c						\
 	dtparser.c						\
 	prparserlex.c						\