Patchwork [02/11] acpica: updates to existing ACPICA sources

login
register
mail settings
Submitter Colin King
Date April 11, 2012, 11:50 p.m.
Message ID <1334188256-26566-3-git-send-email-colin.king@canonical.com>
Download mbox | patch
Permalink /patch/151950/
State Accepted
Headers show

Comments

Colin King - April 11, 2012, 11:50 p.m.
From: Colin Ian King <colin.king@canonical.com>

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpica/source/common/adfile.c                  |    2 +-
 src/acpica/source/common/adisasm.c                 |  106 +-
 src/acpica/source/common/adwalk.c                  |    6 +-
 src/acpica/source/common/dmextern.c                |    2 +-
 src/acpica/source/common/dmrestag.c                |  195 +++-
 src/acpica/source/common/dmtable.c                 |   64 +-
 src/acpica/source/common/dmtbdump.c                |  586 +++++++++-
 src/acpica/source/common/dmtbinfo.c                |  591 ++++++++--
 src/acpica/source/compiler/aslanalyze.c            |   59 +-
 src/acpica/source/compiler/aslbtypes.c             |    2 +-
 src/acpica/source/compiler/aslcodegen.c            |   13 +-
 src/acpica/source/compiler/aslcompile.c            |   81 +-
 src/acpica/source/compiler/aslcompiler.h           |   75 +-
 src/acpica/source/compiler/aslcompiler.l           | 1162 ++++++--------------
 src/acpica/source/compiler/aslcompiler.y           | 1134 +++++++++++++------
 src/acpica/source/compiler/asldefine.h             |   24 +-
 src/acpica/source/compiler/aslerror.c              |  215 +++-
 src/acpica/source/compiler/aslfiles.c              |   86 +-
 src/acpica/source/compiler/aslfold.c               |    2 +-
 src/acpica/source/compiler/aslglobal.h             |   15 +-
 src/acpica/source/compiler/asllength.c             |    2 +-
 src/acpica/source/compiler/asllisting.c            |   12 +-
 src/acpica/source/compiler/aslload.c               |   22 +-
 src/acpica/source/compiler/asllookup.c             |  113 +-
 src/acpica/source/compiler/aslmain.c               |  139 ++-
 src/acpica/source/compiler/aslmap.c                |   81 +-
 src/acpica/source/compiler/aslmessages.h           |  194 ++--
 src/acpica/source/compiler/aslopcodes.c            |  133 ++-
 src/acpica/source/compiler/asloperands.c           |   10 +-
 src/acpica/source/compiler/aslopt.c                |    2 +-
 src/acpica/source/compiler/aslpredef.c             |   23 +-
 src/acpica/source/compiler/aslresource.c           |  103 +-
 src/acpica/source/compiler/aslrestype1.c           |   30 +-
 src/acpica/source/compiler/aslrestype1i.c          |   96 +-
 src/acpica/source/compiler/aslrestype2.c           |    7 +-
 src/acpica/source/compiler/aslrestype2d.c          |   44 +-
 src/acpica/source/compiler/aslrestype2e.c          |   50 +-
 src/acpica/source/compiler/aslrestype2q.c          |   42 +-
 src/acpica/source/compiler/aslrestype2w.c          |   36 +-
 src/acpica/source/compiler/aslstartup.c            |  108 +-
 src/acpica/source/compiler/aslstubs.c              |   18 +-
 src/acpica/source/compiler/asltransform.c          |   19 +-
 src/acpica/source/compiler/asltree.c               |   22 +-
 src/acpica/source/compiler/asltypes.h              |   16 +-
 src/acpica/source/compiler/aslutils.c              |   73 +-
 src/acpica/source/compiler/asluuid.c               |    2 +-
 src/acpica/source/compiler/aslwalks.c              |   75 +-
 src/acpica/source/compiler/dtcompile.c             |   41 +-
 src/acpica/source/compiler/dtcompiler.h            |   28 +-
 src/acpica/source/compiler/dtexpress.c             |   13 +-
 src/acpica/source/compiler/dtfield.c               |   15 +-
 src/acpica/source/compiler/dtio.c                  |   21 +-
 src/acpica/source/compiler/dtparser.l              |    2 +-
 src/acpica/source/compiler/dtparser.y              |    6 +-
 src/acpica/source/compiler/dtsubtable.c            |    7 +-
 src/acpica/source/compiler/dttable.c               |  453 +++++++-
 src/acpica/source/compiler/dttemplate.c            |    2 +-
 src/acpica/source/compiler/dttemplate.h            |  131 ++-
 src/acpica/source/compiler/dtutils.c               |   13 +-
 src/acpica/source/components/debugger/dbcmds.c     |  454 ++++++--
 src/acpica/source/components/debugger/dbdisply.c   |   30 +-
 src/acpica/source/components/debugger/dbexec.c     |    2 +-
 src/acpica/source/components/debugger/dbfileio.c   |    7 +-
 src/acpica/source/components/debugger/dbhistry.c   |    2 +-
 src/acpica/source/components/debugger/dbinput.c    |   14 +-
 src/acpica/source/components/debugger/dbmethod.c   |    2 +-
 src/acpica/source/components/debugger/dbnames.c    |    2 +-
 src/acpica/source/components/debugger/dbstats.c    |    2 +-
 src/acpica/source/components/debugger/dbutils.c    |    9 +-
 src/acpica/source/components/debugger/dbxface.c    |    2 +-
 .../source/components/disassembler/dmbuffer.c      |   10 +-
 .../source/components/disassembler/dmnames.c       |    2 +-
 .../source/components/disassembler/dmobject.c      |    2 +-
 .../source/components/disassembler/dmopcode.c      |   75 +-
 .../source/components/disassembler/dmresrc.c       |   15 +-
 .../source/components/disassembler/dmresrcl.c      |    3 +-
 .../source/components/disassembler/dmresrcs.c      |   51 +-
 .../source/components/disassembler/dmutils.c       |   52 +-
 src/acpica/source/components/disassembler/dmwalk.c |    5 +-
 src/acpica/source/components/dispatcher/dsargs.c   |   12 +-
 .../source/components/dispatcher/dscontrol.c       |    2 +-
 src/acpica/source/components/dispatcher/dsfield.c  |   80 +-
 src/acpica/source/components/dispatcher/dsinit.c   |    2 +-
 src/acpica/source/components/dispatcher/dsmethod.c |    2 +-
 src/acpica/source/components/dispatcher/dsmthdat.c |    2 +-
 src/acpica/source/components/dispatcher/dsobject.c |    2 +-
 src/acpica/source/components/dispatcher/dsopcode.c |    2 +-
 src/acpica/source/components/dispatcher/dsutils.c  |    2 +-
 src/acpica/source/components/dispatcher/dswexec.c  |    2 +-
 src/acpica/source/components/dispatcher/dswload.c  |    2 +-
 src/acpica/source/components/dispatcher/dswload2.c |    2 +-
 src/acpica/source/components/dispatcher/dswscope.c |    2 +-
 src/acpica/source/components/dispatcher/dswstate.c |    2 +-
 src/acpica/source/components/events/evevent.c      |   20 +-
 src/acpica/source/components/events/evglock.c      |   12 +-
 src/acpica/source/components/events/evgpe.c        |    5 +-
 src/acpica/source/components/events/evgpeblk.c     |    5 +-
 src/acpica/source/components/events/evgpeinit.c    |    5 +-
 src/acpica/source/components/events/evgpeutil.c    |    5 +-
 src/acpica/source/components/events/evmisc.c       |   27 +-
 src/acpica/source/components/events/evregion.c     |   32 +-
 src/acpica/source/components/events/evrgnini.c     |    2 +-
 src/acpica/source/components/events/evsci.c        |    6 +-
 src/acpica/source/components/events/evxface.c      |  506 ++++-----
 src/acpica/source/components/events/evxfevnt.c     |    5 +-
 src/acpica/source/components/events/evxfgpe.c      |    5 +-
 src/acpica/source/components/events/evxfregn.c     |    2 +-
 src/acpica/source/components/executer/exconfig.c   |    4 +-
 src/acpica/source/components/executer/exconvrt.c   |    2 +-
 src/acpica/source/components/executer/excreate.c   |   30 +-
 src/acpica/source/components/executer/exdebug.c    |    2 +-
 src/acpica/source/components/executer/exdump.c     |   13 +-
 src/acpica/source/components/executer/exfield.c    |   28 +-
 src/acpica/source/components/executer/exfldio.c    |   28 +-
 src/acpica/source/components/executer/exmisc.c     |    2 +-
 src/acpica/source/components/executer/exmutex.c    |    2 +-
 src/acpica/source/components/executer/exnames.c    |    2 +-
 src/acpica/source/components/executer/exoparg1.c   |    2 +-
 src/acpica/source/components/executer/exoparg2.c   |    2 +-
 src/acpica/source/components/executer/exoparg3.c   |    2 +-
 src/acpica/source/components/executer/exoparg6.c   |    2 +-
 src/acpica/source/components/executer/exprep.c     |   29 +-
 src/acpica/source/components/executer/exregion.c   |    2 +-
 src/acpica/source/components/executer/exresnte.c   |    2 +-
 src/acpica/source/components/executer/exresolv.c   |    2 +-
 src/acpica/source/components/executer/exresop.c    |    2 +-
 src/acpica/source/components/executer/exstore.c    |    2 +-
 src/acpica/source/components/executer/exstoren.c   |    2 +-
 src/acpica/source/components/executer/exstorob.c   |    2 +-
 src/acpica/source/components/executer/exsystem.c   |    2 +-
 src/acpica/source/components/executer/exutils.c    |   32 +-
 src/acpica/source/components/hardware/hwacpi.c     |    5 +-
 src/acpica/source/components/hardware/hwgpe.c      |    5 +-
 src/acpica/source/components/hardware/hwpci.c      |    2 +-
 src/acpica/source/components/hardware/hwregs.c     |   16 +-
 src/acpica/source/components/hardware/hwsleep.c    |  395 ++-----
 src/acpica/source/components/hardware/hwvalid.c    |    4 +-
 src/acpica/source/components/hardware/hwxface.c    |   57 +-
 src/acpica/source/components/namespace/nsaccess.c  |    2 +-
 src/acpica/source/components/namespace/nsalloc.c   |    2 +-
 src/acpica/source/components/namespace/nsdump.c    |   18 +-
 src/acpica/source/components/namespace/nsdumpdv.c  |    4 +-
 src/acpica/source/components/namespace/nseval.c    |    2 +-
 src/acpica/source/components/namespace/nsinit.c    |    2 +-
 src/acpica/source/components/namespace/nsload.c    |    2 +-
 src/acpica/source/components/namespace/nsnames.c   |    2 +-
 src/acpica/source/components/namespace/nsobject.c  |    2 +-
 src/acpica/source/components/namespace/nsparse.c   |    2 +-
 src/acpica/source/components/namespace/nspredef.c  |   28 +-
 src/acpica/source/components/namespace/nsrepair.c  |  167 +--
 src/acpica/source/components/namespace/nsrepair2.c |    7 +-
 src/acpica/source/components/namespace/nssearch.c  |    2 +-
 src/acpica/source/components/namespace/nsutils.c   |    4 +-
 src/acpica/source/components/namespace/nswalk.c    |    2 +-
 src/acpica/source/components/namespace/nsxfeval.c  |    2 +-
 src/acpica/source/components/namespace/nsxfname.c  |    2 +-
 src/acpica/source/components/namespace/nsxfobj.c   |    2 +-
 src/acpica/source/components/parser/psargs.c       |  147 ++-
 src/acpica/source/components/parser/psloop.c       |    2 +-
 src/acpica/source/components/parser/psopcode.c     |   13 +-
 src/acpica/source/components/parser/psparse.c      |    2 +-
 src/acpica/source/components/parser/psscope.c      |    2 +-
 src/acpica/source/components/parser/pstree.c       |    9 +-
 src/acpica/source/components/parser/psutils.c      |    2 +-
 src/acpica/source/components/parser/pswalk.c       |    2 +-
 src/acpica/source/components/parser/psxface.c      |    2 +-
 src/acpica/source/components/resources/rsaddr.c    |    2 +-
 src/acpica/source/components/resources/rscalc.c    |   69 +-
 src/acpica/source/components/resources/rscreate.c  |   75 +-
 src/acpica/source/components/resources/rsdump.c    |  158 ++-
 src/acpica/source/components/resources/rsinfo.c    |   61 +-
 src/acpica/source/components/resources/rsio.c      |    2 +-
 src/acpica/source/components/resources/rsirq.c     |   34 +-
 src/acpica/source/components/resources/rslist.c    |   77 +-
 src/acpica/source/components/resources/rsmemory.c  |    2 +-
 src/acpica/source/components/resources/rsmisc.c    |  268 ++++-
 src/acpica/source/components/resources/rsutils.c   |   61 +-
 src/acpica/source/components/resources/rsxface.c   |   58 +-
 src/acpica/source/components/tables/tbfadt.c       |   54 +-
 src/acpica/source/components/tables/tbfind.c       |    2 +-
 src/acpica/source/components/tables/tbinstal.c     |  121 +-
 src/acpica/source/components/tables/tbutils.c      |  103 +-
 src/acpica/source/components/tables/tbxface.c      |    2 +-
 src/acpica/source/components/tables/tbxfroot.c     |    2 +-
 src/acpica/source/components/utilities/utalloc.c   |    2 +-
 src/acpica/source/components/utilities/utcache.c   |    2 +-
 src/acpica/source/components/utilities/utcopy.c    |    2 +-
 src/acpica/source/components/utilities/utdebug.c   |    2 +-
 src/acpica/source/components/utilities/utdecode.c  |   41 +-
 src/acpica/source/components/utilities/utdelete.c  |   12 +-
 src/acpica/source/components/utilities/uteval.c    |    2 +-
 src/acpica/source/components/utilities/utglobal.c  |   18 +-
 src/acpica/source/components/utilities/utids.c     |    2 +-
 src/acpica/source/components/utilities/utinit.c    |   46 +-
 src/acpica/source/components/utilities/utlock.c    |    2 +-
 src/acpica/source/components/utilities/utmath.c    |    2 +-
 src/acpica/source/components/utilities/utmisc.c    |   40 +-
 src/acpica/source/components/utilities/utmutex.c   |   11 +-
 src/acpica/source/components/utilities/utobject.c  |    2 +-
 src/acpica/source/components/utilities/utosi.c     |    2 +-
 src/acpica/source/components/utilities/utresrc.c   |  295 ++++-
 src/acpica/source/components/utilities/utstate.c   |    2 +-
 src/acpica/source/components/utilities/uttrack.c   |    2 +-
 src/acpica/source/components/utilities/utxface.c   |   54 +-
 src/acpica/source/components/utilities/utxferror.c |    2 +-
 src/acpica/source/include/acapps.h                 |    4 +-
 src/acpica/source/include/accommon.h               |    2 +-
 src/acpica/source/include/acconfig.h               |   30 +-
 src/acpica/source/include/acdebug.h                |   12 +-
 src/acpica/source/include/acdisasm.h               |  202 +++-
 src/acpica/source/include/acdispat.h               |    2 +-
 src/acpica/source/include/acevents.h               |   21 +-
 src/acpica/source/include/acexcep.h                |    8 +-
 src/acpica/source/include/acglobal.h               |   25 +-
 src/acpica/source/include/achware.h                |   63 +-
 src/acpica/source/include/acinterp.h               |    6 +-
 src/acpica/source/include/aclocal.h                |   42 +-
 src/acpica/source/include/acmacros.h               |   11 +-
 src/acpica/source/include/acnames.h                |   15 +-
 src/acpica/source/include/acnamesp.h               |    5 +-
 src/acpica/source/include/acobject.h               |    6 +-
 src/acpica/source/include/acopcode.h               |    6 +-
 src/acpica/source/include/acoutput.h               |    3 +-
 src/acpica/source/include/acparser.h               |    2 +-
 src/acpica/source/include/acpi.h                   |    2 +-
 src/acpica/source/include/acpiosxf.h               |   12 +-
 src/acpica/source/include/acpixf.h                 |  200 +++-
 src/acpica/source/include/acpredef.h               |   40 +-
 src/acpica/source/include/acresrc.h                |  117 +-
 src/acpica/source/include/acrestyp.h               |  228 +++-
 src/acpica/source/include/acstruct.h               |    2 +-
 src/acpica/source/include/actables.h               |    7 +-
 src/acpica/source/include/actbl.h                  |   32 +-
 src/acpica/source/include/actbl1.h                 |   87 +-
 src/acpica/source/include/actbl2.h                 |    2 +-
 src/acpica/source/include/actypes.h                |   44 +-
 src/acpica/source/include/acutils.h                |   50 +-
 src/acpica/source/include/amlcode.h                |   31 +-
 src/acpica/source/include/amlresrc.h               |  162 ++-
 src/acpica/source/include/platform/acenv.h         |    2 +-
 src/acpica/source/include/platform/acgcc.h         |    2 +-
 src/acpica/source/include/platform/aclinux.h       |    2 +-
 .../source/os_specific/service_layers/osunixxf.c   |   51 +-
 src/acpica/source/tools/acpiexec/aecommon.h        |    4 +-
 src/acpica/source/tools/acpiexec/aehandlers.c      |  278 ++++-
 245 files changed, 9266 insertions(+), 3483 deletions(-)
Keng-Yu Lin - April 12, 2012, 2:25 a.m.
On Thu, Apr 12, 2012 at 7:50 AM, Colin King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpica/source/common/adfile.c                  |    2 +-
>  src/acpica/source/common/adisasm.c                 |  106 +-
>  src/acpica/source/common/adwalk.c                  |    6 +-
>  src/acpica/source/common/dmextern.c                |    2 +-
>  src/acpica/source/common/dmrestag.c                |  195 +++-
>  src/acpica/source/common/dmtable.c                 |   64 +-
>  src/acpica/source/common/dmtbdump.c                |  586 +++++++++-
>  src/acpica/source/common/dmtbinfo.c                |  591 ++++++++--
>  src/acpica/source/compiler/aslanalyze.c            |   59 +-
>  src/acpica/source/compiler/aslbtypes.c             |    2 +-
>  src/acpica/source/compiler/aslcodegen.c            |   13 +-
>  src/acpica/source/compiler/aslcompile.c            |   81 +-
>  src/acpica/source/compiler/aslcompiler.h           |   75 +-
>  src/acpica/source/compiler/aslcompiler.l           | 1162 ++++++--------------
>  src/acpica/source/compiler/aslcompiler.y           | 1134 +++++++++++++------
>  src/acpica/source/compiler/asldefine.h             |   24 +-
>  src/acpica/source/compiler/aslerror.c              |  215 +++-
>  src/acpica/source/compiler/aslfiles.c              |   86 +-
>  src/acpica/source/compiler/aslfold.c               |    2 +-
>  src/acpica/source/compiler/aslglobal.h             |   15 +-
>  src/acpica/source/compiler/asllength.c             |    2 +-
>  src/acpica/source/compiler/asllisting.c            |   12 +-
>  src/acpica/source/compiler/aslload.c               |   22 +-
>  src/acpica/source/compiler/asllookup.c             |  113 +-
>  src/acpica/source/compiler/aslmain.c               |  139 ++-
>  src/acpica/source/compiler/aslmap.c                |   81 +-
>  src/acpica/source/compiler/aslmessages.h           |  194 ++--
>  src/acpica/source/compiler/aslopcodes.c            |  133 ++-
>  src/acpica/source/compiler/asloperands.c           |   10 +-
>  src/acpica/source/compiler/aslopt.c                |    2 +-
>  src/acpica/source/compiler/aslpredef.c             |   23 +-
>  src/acpica/source/compiler/aslresource.c           |  103 +-
>  src/acpica/source/compiler/aslrestype1.c           |   30 +-
>  src/acpica/source/compiler/aslrestype1i.c          |   96 +-
>  src/acpica/source/compiler/aslrestype2.c           |    7 +-
>  src/acpica/source/compiler/aslrestype2d.c          |   44 +-
>  src/acpica/source/compiler/aslrestype2e.c          |   50 +-
>  src/acpica/source/compiler/aslrestype2q.c          |   42 +-
>  src/acpica/source/compiler/aslrestype2w.c          |   36 +-
>  src/acpica/source/compiler/aslstartup.c            |  108 +-
>  src/acpica/source/compiler/aslstubs.c              |   18 +-
>  src/acpica/source/compiler/asltransform.c          |   19 +-
>  src/acpica/source/compiler/asltree.c               |   22 +-
>  src/acpica/source/compiler/asltypes.h              |   16 +-
>  src/acpica/source/compiler/aslutils.c              |   73 +-
>  src/acpica/source/compiler/asluuid.c               |    2 +-
>  src/acpica/source/compiler/aslwalks.c              |   75 +-
>  src/acpica/source/compiler/dtcompile.c             |   41 +-
>  src/acpica/source/compiler/dtcompiler.h            |   28 +-
>  src/acpica/source/compiler/dtexpress.c             |   13 +-
>  src/acpica/source/compiler/dtfield.c               |   15 +-
>  src/acpica/source/compiler/dtio.c                  |   21 +-
>  src/acpica/source/compiler/dtparser.l              |    2 +-
>  src/acpica/source/compiler/dtparser.y              |    6 +-
>  src/acpica/source/compiler/dtsubtable.c            |    7 +-
>  src/acpica/source/compiler/dttable.c               |  453 +++++++-
>  src/acpica/source/compiler/dttemplate.c            |    2 +-
>  src/acpica/source/compiler/dttemplate.h            |  131 ++-
>  src/acpica/source/compiler/dtutils.c               |   13 +-
>  src/acpica/source/components/debugger/dbcmds.c     |  454 ++++++--
>  src/acpica/source/components/debugger/dbdisply.c   |   30 +-
>  src/acpica/source/components/debugger/dbexec.c     |    2 +-
>  src/acpica/source/components/debugger/dbfileio.c   |    7 +-
>  src/acpica/source/components/debugger/dbhistry.c   |    2 +-
>  src/acpica/source/components/debugger/dbinput.c    |   14 +-
>  src/acpica/source/components/debugger/dbmethod.c   |    2 +-
>  src/acpica/source/components/debugger/dbnames.c    |    2 +-
>  src/acpica/source/components/debugger/dbstats.c    |    2 +-
>  src/acpica/source/components/debugger/dbutils.c    |    9 +-
>  src/acpica/source/components/debugger/dbxface.c    |    2 +-
>  .../source/components/disassembler/dmbuffer.c      |   10 +-
>  .../source/components/disassembler/dmnames.c       |    2 +-
>  .../source/components/disassembler/dmobject.c      |    2 +-
>  .../source/components/disassembler/dmopcode.c      |   75 +-
>  .../source/components/disassembler/dmresrc.c       |   15 +-
>  .../source/components/disassembler/dmresrcl.c      |    3 +-
>  .../source/components/disassembler/dmresrcs.c      |   51 +-
>  .../source/components/disassembler/dmutils.c       |   52 +-
>  src/acpica/source/components/disassembler/dmwalk.c |    5 +-
>  src/acpica/source/components/dispatcher/dsargs.c   |   12 +-
>  .../source/components/dispatcher/dscontrol.c       |    2 +-
>  src/acpica/source/components/dispatcher/dsfield.c  |   80 +-
>  src/acpica/source/components/dispatcher/dsinit.c   |    2 +-
>  src/acpica/source/components/dispatcher/dsmethod.c |    2 +-
>  src/acpica/source/components/dispatcher/dsmthdat.c |    2 +-
>  src/acpica/source/components/dispatcher/dsobject.c |    2 +-
>  src/acpica/source/components/dispatcher/dsopcode.c |    2 +-
>  src/acpica/source/components/dispatcher/dsutils.c  |    2 +-
>  src/acpica/source/components/dispatcher/dswexec.c  |    2 +-
>  src/acpica/source/components/dispatcher/dswload.c  |    2 +-
>  src/acpica/source/components/dispatcher/dswload2.c |    2 +-
>  src/acpica/source/components/dispatcher/dswscope.c |    2 +-
>  src/acpica/source/components/dispatcher/dswstate.c |    2 +-
>  src/acpica/source/components/events/evevent.c      |   20 +-
>  src/acpica/source/components/events/evglock.c      |   12 +-
>  src/acpica/source/components/events/evgpe.c        |    5 +-
>  src/acpica/source/components/events/evgpeblk.c     |    5 +-
>  src/acpica/source/components/events/evgpeinit.c    |    5 +-
>  src/acpica/source/components/events/evgpeutil.c    |    5 +-
>  src/acpica/source/components/events/evmisc.c       |   27 +-
>  src/acpica/source/components/events/evregion.c     |   32 +-
>  src/acpica/source/components/events/evrgnini.c     |    2 +-
>  src/acpica/source/components/events/evsci.c        |    6 +-
>  src/acpica/source/components/events/evxface.c      |  506 ++++-----
>  src/acpica/source/components/events/evxfevnt.c     |    5 +-
>  src/acpica/source/components/events/evxfgpe.c      |    5 +-
>  src/acpica/source/components/events/evxfregn.c     |    2 +-
>  src/acpica/source/components/executer/exconfig.c   |    4 +-
>  src/acpica/source/components/executer/exconvrt.c   |    2 +-
>  src/acpica/source/components/executer/excreate.c   |   30 +-
>  src/acpica/source/components/executer/exdebug.c    |    2 +-
>  src/acpica/source/components/executer/exdump.c     |   13 +-
>  src/acpica/source/components/executer/exfield.c    |   28 +-
>  src/acpica/source/components/executer/exfldio.c    |   28 +-
>  src/acpica/source/components/executer/exmisc.c     |    2 +-
>  src/acpica/source/components/executer/exmutex.c    |    2 +-
>  src/acpica/source/components/executer/exnames.c    |    2 +-
>  src/acpica/source/components/executer/exoparg1.c   |    2 +-
>  src/acpica/source/components/executer/exoparg2.c   |    2 +-
>  src/acpica/source/components/executer/exoparg3.c   |    2 +-
>  src/acpica/source/components/executer/exoparg6.c   |    2 +-
>  src/acpica/source/components/executer/exprep.c     |   29 +-
>  src/acpica/source/components/executer/exregion.c   |    2 +-
>  src/acpica/source/components/executer/exresnte.c   |    2 +-
>  src/acpica/source/components/executer/exresolv.c   |    2 +-
>  src/acpica/source/components/executer/exresop.c    |    2 +-
>  src/acpica/source/components/executer/exstore.c    |    2 +-
>  src/acpica/source/components/executer/exstoren.c   |    2 +-
>  src/acpica/source/components/executer/exstorob.c   |    2 +-
>  src/acpica/source/components/executer/exsystem.c   |    2 +-
>  src/acpica/source/components/executer/exutils.c    |   32 +-
>  src/acpica/source/components/hardware/hwacpi.c     |    5 +-
>  src/acpica/source/components/hardware/hwgpe.c      |    5 +-
>  src/acpica/source/components/hardware/hwpci.c      |    2 +-
>  src/acpica/source/components/hardware/hwregs.c     |   16 +-
>  src/acpica/source/components/hardware/hwsleep.c    |  395 ++-----
>  src/acpica/source/components/hardware/hwvalid.c    |    4 +-
>  src/acpica/source/components/hardware/hwxface.c    |   57 +-
>  src/acpica/source/components/namespace/nsaccess.c  |    2 +-
>  src/acpica/source/components/namespace/nsalloc.c   |    2 +-
>  src/acpica/source/components/namespace/nsdump.c    |   18 +-
>  src/acpica/source/components/namespace/nsdumpdv.c  |    4 +-
>  src/acpica/source/components/namespace/nseval.c    |    2 +-
>  src/acpica/source/components/namespace/nsinit.c    |    2 +-
>  src/acpica/source/components/namespace/nsload.c    |    2 +-
>  src/acpica/source/components/namespace/nsnames.c   |    2 +-
>  src/acpica/source/components/namespace/nsobject.c  |    2 +-
>  src/acpica/source/components/namespace/nsparse.c   |    2 +-
>  src/acpica/source/components/namespace/nspredef.c  |   28 +-
>  src/acpica/source/components/namespace/nsrepair.c  |  167 +--
>  src/acpica/source/components/namespace/nsrepair2.c |    7 +-
>  src/acpica/source/components/namespace/nssearch.c  |    2 +-
>  src/acpica/source/components/namespace/nsutils.c   |    4 +-
>  src/acpica/source/components/namespace/nswalk.c    |    2 +-
>  src/acpica/source/components/namespace/nsxfeval.c  |    2 +-
>  src/acpica/source/components/namespace/nsxfname.c  |    2 +-
>  src/acpica/source/components/namespace/nsxfobj.c   |    2 +-
>  src/acpica/source/components/parser/psargs.c       |  147 ++-
>  src/acpica/source/components/parser/psloop.c       |    2 +-
>  src/acpica/source/components/parser/psopcode.c     |   13 +-
>  src/acpica/source/components/parser/psparse.c      |    2 +-
>  src/acpica/source/components/parser/psscope.c      |    2 +-
>  src/acpica/source/components/parser/pstree.c       |    9 +-
>  src/acpica/source/components/parser/psutils.c      |    2 +-
>  src/acpica/source/components/parser/pswalk.c       |    2 +-
>  src/acpica/source/components/parser/psxface.c      |    2 +-
>  src/acpica/source/components/resources/rsaddr.c    |    2 +-
>  src/acpica/source/components/resources/rscalc.c    |   69 +-
>  src/acpica/source/components/resources/rscreate.c  |   75 +-
>  src/acpica/source/components/resources/rsdump.c    |  158 ++-
>  src/acpica/source/components/resources/rsinfo.c    |   61 +-
>  src/acpica/source/components/resources/rsio.c      |    2 +-
>  src/acpica/source/components/resources/rsirq.c     |   34 +-
>  src/acpica/source/components/resources/rslist.c    |   77 +-
>  src/acpica/source/components/resources/rsmemory.c  |    2 +-
>  src/acpica/source/components/resources/rsmisc.c    |  268 ++++-
>  src/acpica/source/components/resources/rsutils.c   |   61 +-
>  src/acpica/source/components/resources/rsxface.c   |   58 +-
>  src/acpica/source/components/tables/tbfadt.c       |   54 +-
>  src/acpica/source/components/tables/tbfind.c       |    2 +-
>  src/acpica/source/components/tables/tbinstal.c     |  121 +-
>  src/acpica/source/components/tables/tbutils.c      |  103 +-
>  src/acpica/source/components/tables/tbxface.c      |    2 +-
>  src/acpica/source/components/tables/tbxfroot.c     |    2 +-
>  src/acpica/source/components/utilities/utalloc.c   |    2 +-
>  src/acpica/source/components/utilities/utcache.c   |    2 +-
>  src/acpica/source/components/utilities/utcopy.c    |    2 +-
>  src/acpica/source/components/utilities/utdebug.c   |    2 +-
>  src/acpica/source/components/utilities/utdecode.c  |   41 +-
>  src/acpica/source/components/utilities/utdelete.c  |   12 +-
>  src/acpica/source/components/utilities/uteval.c    |    2 +-
>  src/acpica/source/components/utilities/utglobal.c  |   18 +-
>  src/acpica/source/components/utilities/utids.c     |    2 +-
>  src/acpica/source/components/utilities/utinit.c    |   46 +-
>  src/acpica/source/components/utilities/utlock.c    |    2 +-
>  src/acpica/source/components/utilities/utmath.c    |    2 +-
>  src/acpica/source/components/utilities/utmisc.c    |   40 +-
>  src/acpica/source/components/utilities/utmutex.c   |   11 +-
>  src/acpica/source/components/utilities/utobject.c  |    2 +-
>  src/acpica/source/components/utilities/utosi.c     |    2 +-
>  src/acpica/source/components/utilities/utresrc.c   |  295 ++++-
>  src/acpica/source/components/utilities/utstate.c   |    2 +-
>  src/acpica/source/components/utilities/uttrack.c   |    2 +-
>  src/acpica/source/components/utilities/utxface.c   |   54 +-
>  src/acpica/source/components/utilities/utxferror.c |    2 +-
>  src/acpica/source/include/acapps.h                 |    4 +-
>  src/acpica/source/include/accommon.h               |    2 +-
>  src/acpica/source/include/acconfig.h               |   30 +-
>  src/acpica/source/include/acdebug.h                |   12 +-
>  src/acpica/source/include/acdisasm.h               |  202 +++-
>  src/acpica/source/include/acdispat.h               |    2 +-
>  src/acpica/source/include/acevents.h               |   21 +-
>  src/acpica/source/include/acexcep.h                |    8 +-
>  src/acpica/source/include/acglobal.h               |   25 +-
>  src/acpica/source/include/achware.h                |   63 +-
>  src/acpica/source/include/acinterp.h               |    6 +-
>  src/acpica/source/include/aclocal.h                |   42 +-
>  src/acpica/source/include/acmacros.h               |   11 +-
>  src/acpica/source/include/acnames.h                |   15 +-
>  src/acpica/source/include/acnamesp.h               |    5 +-
>  src/acpica/source/include/acobject.h               |    6 +-
>  src/acpica/source/include/acopcode.h               |    6 +-
>  src/acpica/source/include/acoutput.h               |    3 +-
>  src/acpica/source/include/acparser.h               |    2 +-
>  src/acpica/source/include/acpi.h                   |    2 +-
>  src/acpica/source/include/acpiosxf.h               |   12 +-
>  src/acpica/source/include/acpixf.h                 |  200 +++-
>  src/acpica/source/include/acpredef.h               |   40 +-
>  src/acpica/source/include/acresrc.h                |  117 +-
>  src/acpica/source/include/acrestyp.h               |  228 +++-
>  src/acpica/source/include/acstruct.h               |    2 +-
>  src/acpica/source/include/actables.h               |    7 +-
>  src/acpica/source/include/actbl.h                  |   32 +-
>  src/acpica/source/include/actbl1.h                 |   87 +-
>  src/acpica/source/include/actbl2.h                 |    2 +-
>  src/acpica/source/include/actypes.h                |   44 +-
>  src/acpica/source/include/acutils.h                |   50 +-
>  src/acpica/source/include/amlcode.h                |   31 +-
>  src/acpica/source/include/amlresrc.h               |  162 ++-
>  src/acpica/source/include/platform/acenv.h         |    2 +-
>  src/acpica/source/include/platform/acgcc.h         |    2 +-
>  src/acpica/source/include/platform/aclinux.h       |    2 +-
>  .../source/os_specific/service_layers/osunixxf.c   |   51 +-
>  src/acpica/source/tools/acpiexec/aecommon.h        |    4 +-
>  src/acpica/source/tools/acpiexec/aehandlers.c      |  278 ++++-
>  245 files changed, 9266 insertions(+), 3483 deletions(-)
>
> diff --git a/src/acpica/source/common/adfile.c b/src/acpica/source/common/adfile.c
> index a7020cb..f4e33e2 100644
> --- a/src/acpica/source/common/adfile.c
> +++ b/src/acpica/source/common/adfile.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/common/adisasm.c b/src/acpica/source/common/adisasm.c
> index 748561f..6cd67c7 100644
> --- a/src/acpica/source/common/adisasm.c
> +++ b/src/acpica/source/common/adisasm.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -147,6 +147,10 @@ LsSetupNsList (
>
>  /* Local prototypes */
>
> +static UINT32
> +AdGetFileSize (
> +    FILE                    *File);
> +
>  static void
>  AdCreateTableHeader (
>     char                    *Filename,
> @@ -232,6 +236,38 @@ static ACPI_PARSE_OBJECT    *AcpiGbl_ParseOpRoot;
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    AdGetFileSize
> + *
> + * PARAMETERS:  File                - Open file handle
> + *
> + * RETURN:      File Size
> + *
> + * DESCRIPTION: Get current file size. Uses seek-to-EOF. File must be open.
> + *
> + ******************************************************************************/
> +
> +static UINT32
> +AdGetFileSize (
> +    FILE                    *File)
> +{
> +    UINT32                  FileSize;
> +    long                    Offset;
> +
> +
> +    Offset = ftell (File);
> +
> +    fseek (File, 0, SEEK_END);
> +    FileSize = (UINT32) ftell (File);
> +
> +    /* Restore file pointer */
> +
> +    fseek (File, Offset, SEEK_SET);
> +    return (FileSize);
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    AdInitialize
>  *
>  * PARAMETERS:  None
> @@ -448,11 +484,14 @@ AdAmlDisassemble (
>         AdDisassemblerHeader (Filename);
>         AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n",
>             Table->Signature);
> -        AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue\n */\n\n");
> +        AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength]  "
> +            "FieldName : FieldValue\n */\n\n");
>
>         AcpiDmDumpDataTable (Table);
> -        fprintf (stderr, "Acpi Data Table [%4.4s] decoded, written to \"%s\"\n",
> -            Table->Signature, DisasmFilename);
> +        fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n",
> +            Table->Signature);
> +        fprintf (stderr, "Formatted output:  %s - %u bytes\n",
> +            DisasmFilename, AdGetFileSize (File));
>     }
>     else
>     {
> @@ -475,15 +514,17 @@ AdAmlDisassemble (
>             AcpiOsPrintf ("*****/\n");
>         }
>
> -        /*
> -         * Load namespace from names created within control methods
> -         */
> -        AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId);
> +        /* Load namespace from names created within control methods */
> +
> +        AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
> +            AcpiGbl_RootNode, OwnerId);
>
>         /*
> -         * Cross reference the namespace here, in order to generate External() statements
> +         * Cross reference the namespace here, in order to
> +         * generate External() statements
>          */
> -        AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId);
> +        AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot,
> +            AcpiGbl_RootNode, OwnerId);
>
>         if (AslCompilerdebug)
>         {
> @@ -494,24 +535,20 @@ AdAmlDisassemble (
>
>         AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot);
>
> -        /* Convert fixed-offset references to resource descriptors to symbolic references */
> -
> -        AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode);
> -
>         /*
> -         * If we found any external control methods, we must reparse the entire
> -         * tree with the new information (namely, the number of arguments per
> -         * method)
> +         * If we found any external control methods, we must reparse
> +         * the entire tree with the new information (namely, the
> +         * number of arguments per method)
>          */
>         if (AcpiDmGetExternalMethodCount ())
>         {
>             fprintf (stderr,
> -                "\nFound %u external control methods, reparsing with new information\n",
> +                "\nFound %u external control methods, "
> +                "reparsing with new information\n",
>                 AcpiDmGetExternalMethodCount ());
>
> -            /*
> -             * Reparse, rebuild namespace. no need to xref namespace
> -             */
> +            /* Reparse, rebuild namespace. no need to xref namespace */
> +
>             AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
>             AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode);
>
> @@ -528,7 +565,7 @@ AdAmlDisassemble (
>             Status = AcpiNsRootInitialize ();
>             AcpiDmAddExternalsToNamespace ();
>
> -            /* Parse table. No need to reload it, however (FALSE) */
> +            /* Parse the table again. No need to reload it, however */
>
>             Status = AdParseTable (Table, NULL, FALSE, FALSE);
>             if (ACPI_FAILURE (Status))
> @@ -549,14 +586,23 @@ AdAmlDisassemble (
>             }
>         }
>
> +        /*
> +         * Now that the namespace is finalized, we can perform namespace
> +         * transforms.
> +         *
> +         * 1) Convert fixed-offset references to resource descriptors
> +         *    to symbolic references (Note: modifies namespace)
> +         */
> +        AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode);
> +
>         /* Optional displays */
>
>         if (AcpiGbl_DbOpt_disasm)
>         {
>             AdDisplayTables (Filename, Table);
> -            fprintf (stderr,
> -                "Disassembly completed, written to \"%s\"\n",
> -                DisasmFilename);
> +            fprintf (stderr, "Disassembly completed\n");
> +            fprintf (stderr, "ASL Output:    %s - %u bytes\n",
> +                DisasmFilename, AdGetFileSize (File));
>         }
>     }
>
> @@ -574,11 +620,12 @@ Cleanup:
>
>     if (OutToFile && File)
>     {
> +        if (AslCompilerdebug) /* Display final namespace, with transforms */
> +        {
> +            LsSetupNsList (File);
> +            LsDisplayNamespace ();
> +        }
>
> -#ifdef ASL_DISASM_DEBUG
> -        LsSetupNsList (File);
> -        LsDisplayNamespace ();
> -#endif
>         fclose (File);
>         AcpiOsRedirectOutput (stdout);
>     }
> @@ -940,6 +987,7 @@ AdParseDeferredOps (
>             break;
>
>         case AML_REGION_OP:
> +        case AML_DATA_REGION_OP:
>         case AML_CREATE_QWORD_FIELD_OP:
>         case AML_CREATE_DWORD_FIELD_OP:
>         case AML_CREATE_WORD_FIELD_OP:
> diff --git a/src/acpica/source/common/adwalk.c b/src/acpica/source/common/adwalk.c
> index b4e227d..eeb61d8 100644
> --- a/src/acpica/source/common/adwalk.c
> +++ b/src/acpica/source/common/adwalk.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -450,6 +450,10 @@ AcpiDmDumpDescending (
>         AcpiOsPrintf ("%X", (UINT32) Op->Common.Value.Integer);
>         break;
>
> +    case AML_QWORD_OP:
> +        AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
> +        break;
> +
>     case AML_INT_NAMEPATH_OP:
>         if (Op->Common.Value.String)
>         {
> diff --git a/src/acpica/source/common/dmextern.c b/src/acpica/source/common/dmextern.c
> index b2e2acb..8b8402e 100644
> --- a/src/acpica/source/common/dmextern.c
> +++ b/src/acpica/source/common/dmextern.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index 827dc26..1f0c5fb 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -135,7 +135,7 @@ AcpiDmUpdateResourceName (
>  static char *
>  AcpiDmSearchTagList (
>     UINT32                  BitIndex,
> -    ACPI_RESOURCE_TAG       *TagList);
> +    const ACPI_RESOURCE_TAG *TagList);
>
>  static char *
>  AcpiDmGetResourceTag (
> @@ -180,7 +180,7 @@ AcpiDmAddResourcesToNamespace (
>  *
>  ******************************************************************************/
>
> -static ACPI_RESOURCE_TAG        AcpiDmIrqTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmIrqTags[] =
>  {
>     {( 1 * 8),      ACPI_RESTAG_INTERRUPT},
>     {( 3 * 8) + 0,  ACPI_RESTAG_INTERRUPTTYPE},
> @@ -189,7 +189,7 @@ static ACPI_RESOURCE_TAG        AcpiDmIrqTags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmDmaTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmDmaTags[] =
>  {
>     {( 1 * 8),      ACPI_RESTAG_DMA},
>     {( 2 * 8) + 0,  ACPI_RESTAG_XFERTYPE},
> @@ -198,7 +198,7 @@ static ACPI_RESOURCE_TAG        AcpiDmDmaTags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmIoTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmIoTags[] =
>  {
>     {( 1 * 8) + 0,  ACPI_RESTAG_DECODE},
>     {( 2 * 8),      ACPI_RESTAG_MINADDR},
> @@ -208,14 +208,22 @@ static ACPI_RESOURCE_TAG        AcpiDmIoTags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmFixedIoTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmFixedIoTags[] =
>  {
>     {( 1 * 8),      ACPI_RESTAG_BASEADDRESS},
>     {( 3 * 8),      ACPI_RESTAG_LENGTH},
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmMemory24Tags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmFixedDmaTags[] =
> +{
> +    {( 1 * 8),      ACPI_RESTAG_DMA},
> +    {( 3 * 8),      ACPI_RESTAG_DMATYPE},
> +    {( 5 * 8),      ACPI_RESTAG_XFERTYPE},
> +    {0,             NULL}
> +};
> +
> +static const ACPI_RESOURCE_TAG      AcpiDmMemory24Tags[] =
>  {
>     {( 3 * 8) + 0,  ACPI_RESTAG_READWRITETYPE},
>     {( 4 * 8),      ACPI_RESTAG_MINADDR},
> @@ -225,7 +233,7 @@ static ACPI_RESOURCE_TAG        AcpiDmMemory24Tags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmRegisterTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmRegisterTags[] =
>  {
>     {( 3 * 8),      ACPI_RESTAG_ADDRESSSPACE},
>     {( 4 * 8),      ACPI_RESTAG_REGISTERBITWIDTH},
> @@ -235,7 +243,7 @@ static ACPI_RESOURCE_TAG        AcpiDmRegisterTags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmMemory32Tags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmMemory32Tags[] =
>  {
>     {( 3 * 8) + 0,  ACPI_RESTAG_READWRITETYPE},
>     {( 4 * 8),      ACPI_RESTAG_MINADDR},
> @@ -245,7 +253,7 @@ static ACPI_RESOURCE_TAG        AcpiDmMemory32Tags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmFixedMemory32Tags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmFixedMemory32Tags[] =
>  {
>     {( 3 * 8) + 0,  ACPI_RESTAG_READWRITETYPE},
>     {( 4 * 8),      ACPI_RESTAG_BASEADDRESS},
> @@ -253,7 +261,7 @@ static ACPI_RESOURCE_TAG        AcpiDmFixedMemory32Tags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmInterruptTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmInterruptTags[] =
>  {
>     {( 3 * 8) + 1,  ACPI_RESTAG_INTERRUPTTYPE},
>     {( 3 * 8) + 2,  ACPI_RESTAG_INTERRUPTLEVEL},
> @@ -262,7 +270,7 @@ static ACPI_RESOURCE_TAG        AcpiDmInterruptTags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmAddress16Tags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmAddress16Tags[] =
>  {
>     {( 4 * 8) + 1,  ACPI_RESTAG_DECODE},
>     {( 4 * 8) + 2,  ACPI_RESTAG_MINTYPE},
> @@ -275,7 +283,7 @@ static ACPI_RESOURCE_TAG        AcpiDmAddress16Tags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmAddress32Tags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmAddress32Tags[] =
>  {
>     {( 4 * 8) + 1,  ACPI_RESTAG_DECODE},
>     {( 4 * 8) + 2,  ACPI_RESTAG_MINTYPE},
> @@ -288,7 +296,7 @@ static ACPI_RESOURCE_TAG        AcpiDmAddress32Tags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmAddress64Tags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmAddress64Tags[] =
>  {
>     {( 4 * 8) + 1,  ACPI_RESTAG_DECODE},
>     {( 4 * 8) + 2,  ACPI_RESTAG_MINTYPE},
> @@ -301,7 +309,7 @@ static ACPI_RESOURCE_TAG        AcpiDmAddress64Tags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmExtendedAddressTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmExtendedAddressTags[] =
>  {
>     {( 4 * 8) + 1,  ACPI_RESTAG_DECODE},
>     {( 4 * 8) + 2,  ACPI_RESTAG_MINTYPE},
> @@ -315,9 +323,71 @@ static ACPI_RESOURCE_TAG        AcpiDmExtendedAddressTags[] =
>     {0,             NULL}
>  };
>
> -/* Special-case tables for the type-specific flags */
> +/* Subtype tables for GPIO descriptors */
> +
> +static const ACPI_RESOURCE_TAG      AcpiDmGpioIntTags[] =
> +{
> +    {( 7 * 8) + 0,  ACPI_RESTAG_MODE},
> +    {( 7 * 8) + 1,  ACPI_RESTAG_POLARITY},
> +    {( 7 * 8) + 3,  ACPI_RESTAG_INTERRUPTSHARE},
> +    {( 9 * 8),      ACPI_RESTAG_PINCONFIG},
> +    {(10 * 8),      ACPI_RESTAG_DRIVESTRENGTH},
> +    {(12 * 8),      ACPI_RESTAG_DEBOUNCETIME},
> +    {0,             NULL}
> +};
> +
> +static const ACPI_RESOURCE_TAG      AcpiDmGpioIoTags[] =
> +{
> +    {( 7 * 8) + 0,  ACPI_RESTAG_IORESTRICTION},
> +    {( 7 * 8) + 3,  ACPI_RESTAG_INTERRUPTSHARE},
> +    {( 9 * 8),      ACPI_RESTAG_PINCONFIG},
> +    {(10 * 8),      ACPI_RESTAG_DRIVESTRENGTH},
> +    {(12 * 8),      ACPI_RESTAG_DEBOUNCETIME},
> +    {0,             NULL}
> +};
> +
> +/* Subtype tables for SerialBus descriptors */
> +
> +static const ACPI_RESOURCE_TAG      AcpiDmI2cSerialBusTags[] =
> +{
> +    {( 6 * 8) + 0,  ACPI_RESTAG_SLAVEMODE},
> +    {( 7 * 8) + 0,  ACPI_RESTAG_MODE},
> +    {(12 * 8),      ACPI_RESTAG_SPEED},
> +    {(16 * 8),      ACPI_RESTAG_ADDRESS},
> +    {0,             NULL}
> +};
> +
> +static const ACPI_RESOURCE_TAG      AcpiDmSpiSerialBusTags[] =
> +{
> +    {( 6 * 8) + 0,  ACPI_RESTAG_SLAVEMODE},
> +    {( 7 * 8) + 0,  ACPI_RESTAG_MODE},
> +    {( 7 * 8) + 1,  ACPI_RESTAG_DEVICEPOLARITY},
> +    {(12 * 8),      ACPI_RESTAG_SPEED},
> +    {(16 * 8),      ACPI_RESTAG_LENGTH},
> +    {(17 * 8),      ACPI_RESTAG_PHASE},
> +    {(18 * 8),      ACPI_RESTAG_POLARITY},
> +    {(19 * 8),      ACPI_RESTAG_ADDRESS},
> +    {0,             NULL}
> +};
> +
> +static const ACPI_RESOURCE_TAG      AcpiDmUartSerialBusTags[] =
> +{
> +    {( 6 * 8) + 0,  ACPI_RESTAG_SLAVEMODE}, /* Note: not part of original macro */
> +    {( 7 * 8) + 0,  ACPI_RESTAG_FLOWCONTROL},
> +    {( 7 * 8) + 2,  ACPI_RESTAG_STOPBITS},
> +    {( 7 * 8) + 4,  ACPI_RESTAG_LENGTH},
> +    {( 7 * 8) + 7,  ACPI_RESTAG_ENDIANNESS},
> +    {(12 * 8),      ACPI_RESTAG_SPEED},
> +    {(16 * 8),      ACPI_RESTAG_LENGTH_RX},
> +    {(18 * 8),      ACPI_RESTAG_LENGTH_TX},
> +    {(20 * 8),      ACPI_RESTAG_PARITY},
> +    {(21 * 8),      ACPI_RESTAG_LINE},
> +    {0,             NULL}
> +};
> +
> +/* Subtype tables for Address descriptor type-specific flags */
>
> -static ACPI_RESOURCE_TAG        AcpiDmMemoryFlagTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmMemoryFlagTags[] =
>  {
>     {( 5 * 8) + 0,  ACPI_RESTAG_READWRITETYPE},
>     {( 5 * 8) + 1,  ACPI_RESTAG_MEMTYPE},
> @@ -326,7 +396,7 @@ static ACPI_RESOURCE_TAG        AcpiDmMemoryFlagTags[] =
>     {0,             NULL}
>  };
>
> -static ACPI_RESOURCE_TAG        AcpiDmIoFlagTags[] =
> +static const ACPI_RESOURCE_TAG      AcpiDmIoFlagTags[] =
>  {
>     {( 5 * 8) + 0,  ACPI_RESTAG_RANGETYPE},
>     {( 5 * 8) + 4,  ACPI_RESTAG_TYPE},
> @@ -335,9 +405,15 @@ static ACPI_RESOURCE_TAG        AcpiDmIoFlagTags[] =
>  };
>
>
> -/* Dispatch table used to obtain the correct tag table for a descriptor */
> -
> -static ACPI_RESOURCE_TAG        *AcpiGbl_ResourceTags [] =
> +/*
> + * Dispatch table used to obtain the correct tag table for a descriptor.
> + *
> + * A NULL in this table means one of three things:
> + * 1) The descriptor ID is reserved and invalid
> + * 2) The descriptor has no tags associated with it
> + * 3) The descriptor has subtypes and a separate table will be used.
> + */
> +static const ACPI_RESOURCE_TAG      *AcpiGbl_ResourceTags[] =
>  {
>     /* Small descriptors */
>
> @@ -351,7 +427,7 @@ static ACPI_RESOURCE_TAG        *AcpiGbl_ResourceTags [] =
>     NULL,                           /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */
>     AcpiDmIoTags,                   /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */
>     AcpiDmFixedIoTags,              /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */
> -    NULL,                           /* 0x0A, Reserved */
> +    AcpiDmFixedDmaTags,             /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */
>     NULL,                           /* 0x0B, Reserved */
>     NULL,                           /* 0x0C, Reserved */
>     NULL,                           /* 0x0D, Reserved */
> @@ -371,9 +447,29 @@ static ACPI_RESOURCE_TAG        *AcpiGbl_ResourceTags [] =
>     AcpiDmAddress16Tags,            /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */
>     AcpiDmInterruptTags,            /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */
>     AcpiDmAddress64Tags,            /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */
> -    AcpiDmExtendedAddressTags       /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */
> +    AcpiDmExtendedAddressTags,      /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */
> +    NULL,                           /* 0x0C, ACPI_RESOURCE_NAME_GPIO - Use Subtype table below */
> +    NULL,                           /* 0x0D, Reserved */
> +    NULL                            /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use Subtype table below */
> +};
> +
> +/* GPIO Subtypes */
> +
> +static const ACPI_RESOURCE_TAG      *AcpiGbl_GpioResourceTags[] =
> +{
> +    AcpiDmGpioIntTags,              /* 0x00 Interrupt Connection */
> +    AcpiDmGpioIoTags                /* 0x01 I/O Connection */
>  };
>
> +/* Serial Bus Subtypes */
> +
> +static const ACPI_RESOURCE_TAG      *AcpiGbl_SerialResourceTags[] =
> +{
> +    NULL,                           /* 0x00 Reserved */
> +    AcpiDmI2cSerialBusTags,         /* 0x01 I2C SerialBus */
> +    AcpiDmSpiSerialBusTags,         /* 0x02 SPI SerialBus */
> +    AcpiDmUartSerialBusTags         /* 0x03 UART SerialBus */
> +};
>
>  /*
>  * Globals used to generate unique resource descriptor names. We use names that
> @@ -738,6 +834,9 @@ AcpiDmUpdateResourceName (
>  *
>  * DESCRIPTION: Convert a BitIndex into a symbolic resource tag.
>  *
> + * Note: ResourceIndex should be previously validated and guaranteed to ve
> + *       valid.
> + *
>  ******************************************************************************/
>
>  static char *
> @@ -746,23 +845,16 @@ AcpiDmGetResourceTag (
>     AML_RESOURCE            *Resource,
>     UINT8                   ResourceIndex)
>  {
> -    ACPI_RESOURCE_TAG       *TagList;
> +    const ACPI_RESOURCE_TAG *TagList;
>     char                    *Tag = NULL;
>
>
>     /* Get the tag list for this resource descriptor type */
>
>     TagList = AcpiGbl_ResourceTags[ResourceIndex];
> -    if (!TagList)
> -    {
> -        /* There are no tags for this resource type */
> -
> -        return (NULL);
> -    }
>
>     /*
> -     * Handle the type-specific flags field for the address descriptors.
> -     * Kindof brute force, but just blindly search for an index match.
> +     * Handle descriptors that have multiple subtypes
>      */
>     switch (Resource->DescriptorType)
>     {
> @@ -771,6 +863,10 @@ AcpiDmGetResourceTag (
>     case ACPI_RESOURCE_NAME_ADDRESS64:
>     case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64:
>
> +        /*
> +         * Subtype differentiation is the flags.
> +         * Kindof brute force, but just blindly search for an index match
> +         */
>         if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_MEMORY_RANGE)
>         {
>             Tag = AcpiDmSearchTagList (BitIndex, AcpiDmMemoryFlagTags);
> @@ -788,13 +884,42 @@ AcpiDmGetResourceTag (
>         }
>         break;
>
> +    case ACPI_RESOURCE_NAME_GPIO:
> +
> +        /* GPIO connection has 2 subtypes: Interrupt and I/O */
> +
> +        if (Resource->Gpio.ConnectionType > AML_RESOURCE_MAX_GPIOTYPE)
> +        {
> +            return (NULL);
> +        }
> +
> +        TagList = AcpiGbl_GpioResourceTags[Resource->Gpio.ConnectionType];
> +        break;
> +
> +    case ACPI_RESOURCE_NAME_SERIAL_BUS:
> +
> +        /* SerialBus has 3 subtypes: I2C, SPI, and UART */
> +
> +        if ((Resource->CommonSerialBus.Type == 0) ||
> +            (Resource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE))
> +        {
> +            return (NULL);
> +        }
> +
> +        TagList = AcpiGbl_SerialResourceTags[Resource->CommonSerialBus.Type];
> +        break;
> +
>     default:
>         break;
>     }
>
> -    /* Search the tag list for this descriptor type */
> +    /* Search for a match against the BitIndex */
> +
> +    if (TagList)
> +    {
> +        Tag = AcpiDmSearchTagList (BitIndex, TagList);
> +    }
>
> -    Tag = AcpiDmSearchTagList (BitIndex, TagList);
>     return (Tag);
>  }
>
> @@ -816,7 +941,7 @@ AcpiDmGetResourceTag (
>  static char *
>  AcpiDmSearchTagList (
>     UINT32                  BitIndex,
> -    ACPI_RESOURCE_TAG       *TagList)
> +    const ACPI_RESOURCE_TAG *TagList)
>  {
>
>     /*
> diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
> index b2ed5dd..5c9d5be 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -268,6 +268,16 @@ static const char           *AcpiDmMadtSubnames[] =
>     "Platform Interrupt Sources",   /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
>     "Processor Local x2APIC",       /* ACPI_MADT_TYPE_LOCAL_X2APIC */
>     "Local x2APIC NMI",             /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
> +    "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */
> +    "Generic Interrupt Distributor",/* ACPI_MADT_GENERIC_DISTRIBUTOR */
> +    "Unknown SubTable Type"         /* Reserved */
> +};
> +
> +static const char           *AcpiDmPmttSubnames[] =
> +{
> +    "Socket",                       /* ACPI_PMTT_TYPE_SOCKET */
> +    "Memory Controller",            /* ACPI_PMTT_TYPE_CONTROLLER */
> +    "Physical Component (DIMM)",    /* ACPI_PMTT_TYPE_DIMM  */
>     "Unknown SubTable Type"         /* Reserved */
>  };
>
> @@ -294,7 +304,7 @@ static const char           *AcpiDmIvrsSubnames[] =
>  };
>
>
> -#define ACPI_FADT_PM_RESERVED       8
> +#define ACPI_FADT_PM_RESERVED       9
>
>  static const char           *AcpiDmFadtProfiles[] =
>  {
> @@ -306,6 +316,7 @@ static const char           *AcpiDmFadtProfiles[] =
>     "SOHO Server",
>     "Appliance PC",
>     "Performance Server",
> +    "Tablet",
>     "Unknown Profile Type"
>  };
>
> @@ -340,6 +351,7 @@ ACPI_DMTABLE_DATA    AcpiDmTableData[] =
>     {ACPI_SIG_ASF,  NULL,                   AcpiDmDumpAsf,  DtCompileAsf,   TemplateAsf,    "Alert Standard Format table"},
>     {ACPI_SIG_BOOT, AcpiDmTableInfoBoot,    NULL,           NULL,           TemplateBoot,   "Simple Boot Flag Table"},
>     {ACPI_SIG_BERT, AcpiDmTableInfoBert,    NULL,           NULL,           TemplateBert,   "Boot Error Record Table"},
> +    {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt,    NULL,           NULL,           TemplateBgrt,   "Boot Graphics Resource Table"},
>     {ACPI_SIG_CPEP, NULL,                   AcpiDmDumpCpep, DtCompileCpep,  TemplateCpep,   "Corrected Platform Error Polling table"},
>     {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp,    NULL,           NULL,           TemplateDbgp,   "Debug Port table"},
>     {ACPI_SIG_DMAR, NULL,                   AcpiDmDumpDmar, DtCompileDmar,  TemplateDmar,   "DMA Remapping table"},
> @@ -347,14 +359,20 @@ ACPI_DMTABLE_DATA    AcpiDmTableData[] =
>     {ACPI_SIG_EINJ, NULL,                   AcpiDmDumpEinj, DtCompileEinj,  TemplateEinj,   "Error Injection table"},
>     {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  TemplateErst,   "Error Record Serialization Table"},
>     {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  TemplateFadt,   "Fixed ACPI Description Table"},
> +    {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  TemplateFpdt,   "Firmware Performance Data Table"},
> +    {ACPI_SIG_GTDT, AcpiDmTableInfoGtdt,    NULL,           NULL,           TemplateGtdt,   "Generic Timer Description Table"},
>     {ACPI_SIG_HEST, NULL,                   AcpiDmDumpHest, DtCompileHest,  TemplateHest,   "Hardware Error Source Table"},
>     {ACPI_SIG_HPET, AcpiDmTableInfoHpet,    NULL,           NULL,           TemplateHpet,   "High Precision Event Timer table"},
>     {ACPI_SIG_IVRS, NULL,                   AcpiDmDumpIvrs, DtCompileIvrs,  TemplateIvrs,   "I/O Virtualization Reporting Structure"},
>     {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  TemplateMadt,   "Multiple APIC Description Table"},
>     {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  TemplateMcfg,   "Memory Mapped Configuration table"},
>     {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           TemplateMchi,   "Management Controller Host Interface table"},
> +    {ACPI_SIG_MPST, AcpiDmTableInfoMpst,    AcpiDmDumpMpst, DtCompileMpst,  TemplateMpst,   "Memory Power State Table"},
>     {ACPI_SIG_MSCT, NULL,                   AcpiDmDumpMsct, DtCompileMsct,  TemplateMsct,   "Maximum System Characteristics Table"},
> +    {ACPI_SIG_PCCT, NULL,                   AcpiDmDumpPcct, NULL,           NULL,           "Platform Communications Channel Table"},
> +    {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  TemplatePmtt,   "Platform Memory Topology Table"},
>     {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  TemplateRsdt,   "Root System Description Table"},
> +    {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           TemplateS3pt,   "S3 Performance Table"},
>     {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           TemplateSbst,   "Smart Battery Specification Table"},
>     {ACPI_SIG_SLIC, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  TemplateSlic,   "Software Licensing Description Table"},
>     {ACPI_SIG_SLIT, NULL,                   AcpiDmDumpSlit, DtCompileSlit,  TemplateSlit,   "System Locality Information Table"},
> @@ -472,7 +490,7 @@ AcpiDmDumpDataTable (
>
>     /*
>      * Handle tables that don't use the common ACPI table header structure.
> -     * Currently, these are the FACS and RSDP.
> +     * Currently, these are the FACS, RSDP, and S3PT.
>      */
>     if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))
>     {
> @@ -483,6 +501,10 @@ AcpiDmDumpDataTable (
>     {
>         Length = AcpiDmDumpRsdp (Table);
>     }
> +    else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT))
> +    {
> +        Length = AcpiDmDumpS3pt (Table);
> +    }
>     else
>     {
>         /*
> @@ -718,6 +740,7 @@ AcpiDmDumpTable (
>         case ACPI_DMT_ACCWIDTH:
>         case ACPI_DMT_IVRS:
>         case ACPI_DMT_MADT:
> +        case ACPI_DMT_PMTT:
>         case ACPI_DMT_SRAT:
>         case ACPI_DMT_ASF:
>         case ACPI_DMT_HESTNTYP:
> @@ -742,6 +765,10 @@ AcpiDmDumpTable (
>         case ACPI_DMT_SLIC:
>             ByteLength = 4;
>             break;
> +        case ACPI_DMT_UINT40:
> +            ByteLength = 5;
> +            break;
> +        case ACPI_DMT_UINT48:
>         case ACPI_DMT_NAME6:
>             ByteLength = 6;
>             break;
> @@ -790,6 +817,12 @@ AcpiDmDumpTable (
>             return (AE_BAD_DATA);
>         }
>
> +        if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
> +        {
> +            AcpiOsPrintf ("%s", Info->Name);
> +            continue;
> +        }
> +
>         /* Start a new line and decode the opcode */
>
>         AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name);
> @@ -817,17 +850,29 @@ AcpiDmDumpTable (
>             AcpiOsPrintf ("%1.1X\n", *Target & 0x03);
>             break;
>
> +        case ACPI_DMT_FLAGS1:
> +
> +            AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03);
> +            break;
> +
>         case ACPI_DMT_FLAGS2:
>
>             AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03);
>             break;
>
> +        case ACPI_DMT_FLAGS4:
> +
> +            AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03);
> +            break;
> +
>         /* Integer Data Types */
>
>         case ACPI_DMT_UINT8:
>         case ACPI_DMT_UINT16:
>         case ACPI_DMT_UINT24:
>         case ACPI_DMT_UINT32:
> +        case ACPI_DMT_UINT40:
> +        case ACPI_DMT_UINT48:
>         case ACPI_DMT_UINT56:
>         case ACPI_DMT_UINT64:
>             /*
> @@ -1093,6 +1138,19 @@ AcpiDmDumpTable (
>             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmMadtSubnames[Temp8]);
>             break;
>
> +        case ACPI_DMT_PMTT:
> +
> +            /* PMTT subtable types */
> +
> +            Temp8 = *Target;
> +            if (Temp8 > ACPI_PMTT_TYPE_RESERVED)
> +            {
> +                Temp8 = ACPI_PMTT_TYPE_RESERVED;
> +            }
> +
> +            AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPmttSubnames[Temp8]);
> +            break;
> +
>         case ACPI_DMT_SLIC:
>
>             /* SLIC subtable types */
> diff --git a/src/acpica/source/common/dmtbdump.c b/src/acpica/source/common/dmtbdump.c
> index 2102bab..0ff0082 100644
> --- a/src/acpica/source/common/dmtbdump.c
> +++ b/src/acpica/source/common/dmtbdump.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -302,11 +302,18 @@ AcpiDmDumpFadt (
>         AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2);
>     }
>
> -    /* Check for FADT revision 3 fields and up (ACPI 2.0+ extended data) */
> +    /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */
>
>     else if (Table->Length > ACPI_FADT_V2_SIZE)
>     {
>         AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3);
> +
> +        /* Check for FADT revision 5 fields and up (ACPI 5.0+) */
> +
> +        if (Table->Length > ACPI_FADT_V3_SIZE)
> +        {
> +            AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5);
> +        }
>     }
>
>     /* Validate various fields in the FADT, including length */
> @@ -362,6 +369,10 @@ AcpiDmValidateFadtLength (
>         ExpectedLength = ACPI_FADT_V3_SIZE;
>         break;
>
> +    case 5:
> +        ExpectedLength = ACPI_FADT_V5_SIZE;
> +        break;
> +
>     default:
>         return;
>     }
> @@ -823,6 +834,84 @@ AcpiDmDumpErst (
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    AcpiDmDumpFpdt
> + *
> + * PARAMETERS:  Table               - A FPDT table
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Format the contents of a FPDT. This table type consists
> + *              of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpFpdt (
> +    ACPI_TABLE_HEADER       *Table)
> +{
> +    ACPI_STATUS             Status;
> +    ACPI_FPDT_HEADER        *SubTable;
> +    UINT32                  Length = Table->Length;
> +    UINT32                  Offset = sizeof (ACPI_TABLE_FPDT);
> +    ACPI_DMTABLE_INFO       *InfoTable;
> +
> +
> +    /* There is no main table (other than the standard ACPI header) */
> +
> +    /* Sub-tables */
> +
> +    SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
> +    while (Offset < Table->Length)
> +    {
> +        /* Common sub-table header */
> +
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (Length, Offset, SubTable,
> +                    SubTable->Length, AcpiDmTableInfoFpdtHdr);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +        switch (SubTable->Type)
> +        {
> +        case ACPI_FPDT_TYPE_BOOT:
> +            InfoTable = AcpiDmTableInfoFpdt0;
> +            break;
> +        case ACPI_FPDT_TYPE_S3PERF:
> +            InfoTable = AcpiDmTableInfoFpdt1;
> +            break;
> +        default:
> +            AcpiOsPrintf ("\n**** Unknown FPDT sub-table type 0x%X\n\n", SubTable->Type);
> +
> +            /* Attempt to continue */
> +
> +            if (!SubTable->Length)
> +            {
> +                AcpiOsPrintf ("Invalid zero length subtable\n");
> +                return;
> +            }
> +            goto NextSubTable;
> +        }
> +
> +        Status = AcpiDmDumpTable (Length, Offset, SubTable,
> +                    SubTable->Length, InfoTable);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +NextSubTable:
> +        /* Point to next sub-table */
> +
> +        Offset += SubTable->Length;
> +        SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length);
> +    }
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    AcpiDmDumpHest
>  *
>  * PARAMETERS:  Table               - A HEST table
> @@ -1206,6 +1295,12 @@ AcpiDmDumpMadt (
>         case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
>             InfoTable = AcpiDmTableInfoMadt10;
>             break;
> +        case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
> +            InfoTable = AcpiDmTableInfoMadt11;
> +            break;
> +        case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
> +            InfoTable = AcpiDmTableInfoMadt12;
> +            break;
>         default:
>             AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type);
>
> @@ -1295,6 +1390,150 @@ AcpiDmDumpMcfg (
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    AcpiDmDumpMpst
> + *
> + * PARAMETERS:  Table               - A MPST Table
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Format the contents of a MPST table
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpMpst (
> +    ACPI_TABLE_HEADER       *Table)
> +{
> +    ACPI_STATUS             Status;
> +    UINT32                  Offset = sizeof (ACPI_TABLE_MPST);
> +    ACPI_MPST_POWER_NODE    *SubTable0;
> +    ACPI_MPST_POWER_STATE   *SubTable0A;
> +    ACPI_MPST_COMPONENT     *SubTable0B;
> +    ACPI_MPST_DATA_HDR      *SubTable1;
> +    ACPI_MPST_POWER_DATA    *SubTable2;
> +    UINT16                  SubtableCount;
> +    UINT8                   PowerStateCount;
> +    UINT8                   ComponentCount;
> +
> +
> +    /* Main table */
> +
> +    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return;
> +    }
> +
> +    /* Subtable: Memory Power Node(s) */
> +
> +    SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
> +    SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
> +
> +    while ((Offset < Table->Length) && SubtableCount)
> +    {
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0,
> +                    sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +        /* Extract the sub-subtable counts */
> +
> +        PowerStateCount = SubTable0->NumPowerStates;
> +        ComponentCount = SubTable0->NumPhysicalComponents;
> +        Offset += sizeof (ACPI_MPST_POWER_NODE);
> +
> +        /* Sub-subtables - Memory Power State Structure(s) */
> +
> +        SubTable0A = ACPI_ADD_PTR (ACPI_MPST_POWER_STATE, SubTable0,
> +            sizeof (ACPI_MPST_POWER_NODE));
> +
> +        while (PowerStateCount)
> +        {
> +            AcpiOsPrintf ("\n");
> +            Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A,
> +                        sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return;
> +            }
> +
> +            SubTable0A++;
> +            PowerStateCount--;
> +            Offset += sizeof (ACPI_MPST_POWER_STATE);
> +       }
> +
> +        /* Sub-subtables - Physical Component ID Structure(s) */
> +
> +        SubTable0B = ACPI_CAST_PTR (ACPI_MPST_COMPONENT, SubTable0A);
> +
> +        if (ComponentCount)
> +        {
> +            AcpiOsPrintf ("\n");
> +        }
> +
> +        while (ComponentCount)
> +        {
> +            Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B,
> +                        sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return;
> +            }
> +
> +            SubTable0B++;
> +            ComponentCount--;
> +            Offset += sizeof (ACPI_MPST_COMPONENT);
> +        }
> +
> +        /* Point to next Memory Power Node subtable */
> +
> +        SubtableCount--;
> +        SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, SubTable0,
> +            sizeof (ACPI_MPST_POWER_NODE) +
> +            (sizeof (ACPI_MPST_POWER_STATE) * SubTable0->NumPowerStates) +
> +            (sizeof (ACPI_MPST_COMPONENT) * SubTable0->NumPhysicalComponents));
> +    }
> +
> +    /* Subtable: Count of Memory Power State Characteristic structures */
> +
> +    AcpiOsPrintf ("\n");
> +    SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0);
> +    Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1,
> +                sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return;
> +    }
> +
> +    SubtableCount = SubTable1->CharacteristicsCount;
> +    Offset += sizeof (ACPI_MPST_DATA_HDR);
> +
> +    /* Subtable: Memory Power State Characteristics structure(s) */
> +
> +    SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, sizeof (ACPI_MPST_DATA_HDR));
> +
> +    while ((Offset < Table->Length) && SubtableCount)
> +    {
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2,
> +                    sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +        SubTable2++;
> +        SubtableCount--;
> +        Offset += sizeof (ACPI_MPST_POWER_DATA);
> +    }
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    AcpiDmDumpMsct
>  *
>  * PARAMETERS:  Table               - A MSCT table
> @@ -1347,6 +1586,349 @@ AcpiDmDumpMsct (
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    AcpiDmDumpPcct
> + *
> + * PARAMETERS:  Table               - A PCCT table
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Format the contents of a PCCT. This table type consists
> + *              of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPcct (
> +    ACPI_TABLE_HEADER       *Table)
> +{
> +    ACPI_STATUS             Status;
> +    ACPI_PCCT_SUBSPACE      *SubTable;
> +    UINT32                  Length = Table->Length;
> +    UINT32                  Offset = sizeof (ACPI_TABLE_PCCT);
> +
> +
> +    /* Main table */
> +
> +    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return;
> +    }
> +
> +    /* Sub-tables */
> +
> +    SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
> +    while (Offset < Table->Length)
> +    {
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (Length, Offset, SubTable,
> +                    SubTable->Header.Length, AcpiDmTableInfoPcct0);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +        /* Point to next sub-table */
> +
> +        Offset += SubTable->Header.Length;
> +        SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, SubTable,
> +                    SubTable->Header.Length);
> +    }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDmDumpPmtt
> + *
> + * PARAMETERS:  Table               - A PMTT table
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Format the contents of a PMTT. This table type consists
> + *              of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPmtt (
> +    ACPI_TABLE_HEADER       *Table)
> +{
> +    ACPI_STATUS             Status;
> +    ACPI_PMTT_HEADER        *SubTable;
> +    ACPI_PMTT_HEADER        *MemSubTable;
> +    ACPI_PMTT_HEADER        *DimmSubTable;
> +    ACPI_PMTT_DOMAIN        *DomainArray;
> +    UINT32                  Length = Table->Length;
> +    UINT32                  Offset = sizeof (ACPI_TABLE_PMTT);
> +    UINT32                  MemOffset;
> +    UINT32                  DimmOffset;
> +    UINT32                  DomainOffset;
> +    UINT32                  DomainCount;
> +
> +
> +    /* Main table */
> +
> +    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return;
> +    }
> +
> +    /* Subtables */
> +
> +    SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
> +    while (Offset < Table->Length)
> +    {
> +        /* Common subtable header */
> +
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (Length, Offset, SubTable,
> +                    SubTable->Length, AcpiDmTableInfoPmttHdr);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +        /* Only Socket subtables are expected at this level */
> +
> +        if (SubTable->Type != ACPI_PMTT_TYPE_SOCKET)
> +        {
> +            AcpiOsPrintf (
> +                "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> +                SubTable->Type);
> +            return;
> +        }
> +
> +        /* Dump the fixed-length portion of the subtable */
> +
> +        Status = AcpiDmDumpTable (Length, Offset, SubTable,
> +                    SubTable->Length, AcpiDmTableInfoPmtt0);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +
> +        /* Walk the memory controller subtables */
> +
> +        MemOffset = sizeof (ACPI_PMTT_SOCKET);
> +        MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable,
> +            sizeof (ACPI_PMTT_SOCKET));
> +
> +        while (((Offset + MemOffset) < Table->Length) &&
> +            (MemOffset < SubTable->Length))
> +        {
> +            /* Common subtable header */
> +
> +            AcpiOsPrintf ("\n");
> +            Status = AcpiDmDumpTable (Length,
> +                        Offset + MemOffset, MemSubTable,
> +                        MemSubTable->Length, AcpiDmTableInfoPmttHdr);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return;
> +            }
> +
> +            /* Only memory controller subtables are expected at this level */
> +
> +            if (MemSubTable->Type != ACPI_PMTT_TYPE_CONTROLLER)
> +            {
> +                AcpiOsPrintf (
> +                    "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> +                    MemSubTable->Type);
> +                return;
> +            }
> +
> +            /* Dump the fixed-length portion of the controller subtable */
> +
> +            Status = AcpiDmDumpTable (Length,
> +                        Offset + MemOffset, MemSubTable,
> +                        MemSubTable->Length, AcpiDmTableInfoPmtt1);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return;
> +            }
> +
> +            /* Walk the variable count of proximity domains */
> +
> +            DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubTable)->DomainCount;
> +            DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
> +            DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubTable,
> +                sizeof (ACPI_PMTT_CONTROLLER));
> +
> +            while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
> +                ((MemOffset + DomainOffset) < SubTable->Length) &&
> +                DomainCount)
> +            {
> +                Status = AcpiDmDumpTable (Length,
> +                            Offset + MemOffset + DomainOffset, DomainArray,
> +                            sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a);
> +                if (ACPI_FAILURE (Status))
> +                {
> +                    return;
> +                }
> +
> +                DomainOffset += sizeof (ACPI_PMTT_DOMAIN);
> +                DomainArray++;
> +                DomainCount--;
> +            }
> +
> +            if (DomainCount)
> +            {
> +                AcpiOsPrintf (
> +                    "\n**** DomainCount exceeds subtable length\n\n",
> +                    MemSubTable->Type);
> +            }
> +
> +            /* Walk the physical component (DIMM) subtables */
> +
> +            DimmOffset = DomainOffset;
> +            DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubTable,
> +                DomainOffset);
> +
> +            while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
> +                (DimmOffset < MemSubTable->Length))
> +            {
> +                /* Common subtable header */
> +
> +                AcpiOsPrintf ("\n");
> +                Status = AcpiDmDumpTable (Length,
> +                            Offset + MemOffset + DimmOffset, DimmSubTable,
> +                            DimmSubTable->Length, AcpiDmTableInfoPmttHdr);
> +                if (ACPI_FAILURE (Status))
> +                {
> +                    return;
> +                }
> +
> +                /* Only DIMM subtables are expected at this level */
> +
> +                if (DimmSubTable->Type != ACPI_PMTT_TYPE_DIMM)
> +                {
> +                    AcpiOsPrintf (
> +                        "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> +                        DimmSubTable->Type);
> +                    return;
> +                }
> +
> +                /* Dump the fixed-length DIMM subtable */
> +
> +                Status = AcpiDmDumpTable (Length,
> +                            Offset + MemOffset + DimmOffset, DimmSubTable,
> +                            DimmSubTable->Length, AcpiDmTableInfoPmtt2);
> +                if (ACPI_FAILURE (Status))
> +                {
> +                    return;
> +                }
> +
> +                /* Point to next DIMM subtable */
> +
> +                DimmOffset += DimmSubTable->Length;
> +                DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> +                    DimmSubTable, DimmSubTable->Length);
> +            }
> +
> +            /* Point to next Controller subtable */
> +
> +            MemOffset += MemSubTable->Length;
> +            MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> +                MemSubTable, MemSubTable->Length);
> +        }
> +
> +        /* Point to next Socket subtable */
> +
> +        Offset += SubTable->Length;
> +        SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> +            SubTable, SubTable->Length);
> +    }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDmDumpS3pt
> + *
> + * PARAMETERS:  Table               - A S3PT table
> + *
> + * RETURN:      Length of the table
> + *
> + * DESCRIPTION: Format the contents of a S3PT
> + *
> + ******************************************************************************/
> +
> +UINT32
> +AcpiDmDumpS3pt (
> +    ACPI_TABLE_HEADER       *Tables)
> +{
> +    ACPI_STATUS             Status;
> +    UINT32                  Offset = sizeof (ACPI_TABLE_S3PT);
> +    ACPI_S3PT_HEADER        *SubTable;
> +    ACPI_DMTABLE_INFO       *InfoTable;
> +    ACPI_TABLE_S3PT         *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
> +
> +
> +    /* Main table */
> +
> +    Status = AcpiDmDumpTable (Offset, 0, S3ptTable, 0, AcpiDmTableInfoS3pt);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return 0;
> +    }
> +
> +    SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset);
> +    while (Offset < S3ptTable->Length)
> +    {
> +        /* Common sub-table header */
> +
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
> +                    SubTable->Length, AcpiDmTableInfoS3ptHdr);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return 0;
> +        }
> +
> +        switch (SubTable->Type)
> +        {
> +        case ACPI_S3PT_TYPE_RESUME:
> +            InfoTable = AcpiDmTableInfoS3pt0;
> +            break;
> +        case ACPI_S3PT_TYPE_SUSPEND:
> +            InfoTable = AcpiDmTableInfoS3pt1;
> +            break;
> +        default:
> +            AcpiOsPrintf ("\n**** Unknown S3PT sub-table type 0x%X\n", SubTable->Type);
> +
> +            /* Attempt to continue */
> +
> +            if (!SubTable->Length)
> +            {
> +                AcpiOsPrintf ("Invalid zero length subtable\n");
> +                return 0;
> +            }
> +            goto NextSubTable;
> +        }
> +
> +        AcpiOsPrintf ("\n");
> +        Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
> +                    SubTable->Length, InfoTable);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return 0;
> +        }
> +
> +NextSubTable:
> +        /* Point to next sub-table */
> +
> +        Offset += SubTable->Length;
> +        SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length);
> +    }
> +
> +    return (S3ptTable->Length);
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    AcpiDmDumpSlic
>  *
>  * PARAMETERS:  Table               - A SLIC table
> diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c
> index 05e5709..361e7fb 100644
> --- a/src/acpica/source/common/dmtbinfo.c
> +++ b/src/acpica/source/common/dmtbinfo.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -150,97 +150,123 @@
>  /*
>  * Macros used to generate offsets to specific table fields
>  */
> -#define ACPI_FACS_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_FACS,f)
> -#define ACPI_GAS_OFFSET(f)              (UINT8) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
> -#define ACPI_HDR_OFFSET(f)              (UINT8) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
> -#define ACPI_RSDP_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_RSDP,f)
> -#define ACPI_BOOT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
> -#define ACPI_BERT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_BERT,f)
> -#define ACPI_CPEP_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
> -#define ACPI_DBGP_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
> -#define ACPI_DMAR_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_DMAR,f)
> -#define ACPI_ECDT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_ECDT,f)
> -#define ACPI_EINJ_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_EINJ,f)
> -#define ACPI_ERST_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_ERST,f)
> -#define ACPI_HEST_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_HEST,f)
> -#define ACPI_HPET_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_HPET,f)
> -#define ACPI_IVRS_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_IVRS,f)
> -#define ACPI_MADT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_MADT,f)
> -#define ACPI_MCFG_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
> -#define ACPI_MCHI_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_MCHI,f)
> -#define ACPI_MSCT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_MSCT,f)
> -#define ACPI_SBST_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_SBST,f)
> -#define ACPI_SLIT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_SLIT,f)
> -#define ACPI_SPCR_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_SPCR,f)
> -#define ACPI_SPMI_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
> -#define ACPI_SRAT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_SRAT,f)
> -#define ACPI_TCPA_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_TCPA,f)
> -#define ACPI_UEFI_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
> -#define ACPI_WAET_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_WAET,f)
> -#define ACPI_WDAT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_WDAT,f)
> -#define ACPI_WDDT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_WDDT,f)
> -#define ACPI_WDRT_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_TABLE_WDRT,f)
> +#define ACPI_FACS_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f)
> +#define ACPI_GAS_OFFSET(f)              (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
> +#define ACPI_HDR_OFFSET(f)              (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
> +#define ACPI_RSDP_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f)
> +#define ACPI_BERT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f)
> +#define ACPI_BGRT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f)
> +#define ACPI_BOOT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
> +#define ACPI_CPEP_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
> +#define ACPI_DBGP_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
> +#define ACPI_DMAR_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_DMAR,f)
> +#define ACPI_DRTM_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f)
> +#define ACPI_ECDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_ECDT,f)
> +#define ACPI_EINJ_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_EINJ,f)
> +#define ACPI_ERST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_ERST,f)
> +#define ACPI_GTDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_GTDT,f)
> +#define ACPI_HEST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_HEST,f)
> +#define ACPI_HPET_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_HPET,f)
> +#define ACPI_IVRS_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_IVRS,f)
> +#define ACPI_MADT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MADT,f)
> +#define ACPI_MCFG_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
> +#define ACPI_MCHI_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MCHI,f)
> +#define ACPI_MPST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MPST,f)
> +#define ACPI_MSCT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MSCT,f)
> +#define ACPI_PCCT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f)
> +#define ACPI_PMTT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f)
> +#define ACPI_S3PT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f)
> +#define ACPI_SBST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f)
> +#define ACPI_SLIT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIT,f)
> +#define ACPI_SPCR_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SPCR,f)
> +#define ACPI_SPMI_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
> +#define ACPI_SRAT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f)
> +#define ACPI_TCPA_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA,f)
> +#define ACPI_UEFI_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
> +#define ACPI_WAET_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f)
> +#define ACPI_WDAT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_WDAT,f)
> +#define ACPI_WDDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_WDDT,f)
> +#define ACPI_WDRT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_WDRT,f)
>
>  /* Subtables */
>
> -#define ACPI_ASF0_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_ASF_INFO,f)
> -#define ACPI_ASF1_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT,f)
> -#define ACPI_ASF1a_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f)
> -#define ACPI_ASF2_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_ASF_REMOTE,f)
> -#define ACPI_ASF2a_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f)
> -#define ACPI_ASF3_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_ASF_RMCP,f)
> -#define ACPI_ASF4_OFFSET(f)             (UINT8) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
> -#define ACPI_CPEP0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
> -#define ACPI_DMARS_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f)
> -#define ACPI_DMAR0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f)
> -#define ACPI_DMAR1_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f)
> -#define ACPI_DMAR2_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_DMAR_ATSR,f)
> -#define ACPI_DMAR3_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_DMAR_RHSA,f)
> -#define ACPI_EINJ0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> -#define ACPI_ERST0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> -#define ACPI_HEST0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
> -#define ACPI_HEST1_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
> -#define ACPI_HEST2_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
> -#define ACPI_HEST6_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_AER_ROOT,f)
> -#define ACPI_HEST7_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_AER,f)
> -#define ACPI_HEST8_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_AER_BRIDGE,f)
> -#define ACPI_HEST9_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_GENERIC,f)
> -#define ACPI_HESTN_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
> -#define ACPI_HESTB_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
> -#define ACPI_IVRSH_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_IVRS_HEADER,f)
> -#define ACPI_IVRS0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f)
> -#define ACPI_IVRS1_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_IVRS_MEMORY,f)
> -#define ACPI_IVRSD_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f)
> -#define ACPI_IVRS8A_OFFSET(f)           (UINT8) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f)
> -#define ACPI_IVRS8B_OFFSET(f)           (UINT8) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f)
> -#define ACPI_IVRS8C_OFFSET(f)           (UINT8) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f)
> -#define ACPI_MADT0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f)
> -#define ACPI_MADT1_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_IO_APIC,f)
> -#define ACPI_MADT2_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f)
> -#define ACPI_MADT3_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f)
> -#define ACPI_MADT4_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f)
> -#define ACPI_MADT5_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f)
> -#define ACPI_MADT6_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f)
> -#define ACPI_MADT7_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f)
> -#define ACPI_MADT8_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f)
> -#define ACPI_MADT9_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC,f)
> -#define ACPI_MADT10_OFFSET(f)           (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f)
> -#define ACPI_MADTH_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> -#define ACPI_MCFG0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
> -#define ACPI_MSCT0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f)
> -#define ACPI_SLICH_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SLIC_HEADER,f)
> -#define ACPI_SLIC0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SLIC_KEY,f)
> -#define ACPI_SLIC1_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SLIC_MARKER,f)
> -#define ACPI_SRATH_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> -#define ACPI_SRAT0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f)
> -#define ACPI_SRAT1_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f)
> -#define ACPI_SRAT2_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
> -#define ACPI_WDAT0_OFFSET(f)            (UINT8) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
> +#define ACPI_ASF0_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f)
> +#define ACPI_ASF1_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f)
> +#define ACPI_ASF1a_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f)
> +#define ACPI_ASF2_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_REMOTE,f)
> +#define ACPI_ASF2a_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f)
> +#define ACPI_ASF3_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f)
> +#define ACPI_ASF4_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
> +#define ACPI_CPEP0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
> +#define ACPI_DMARS_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f)
> +#define ACPI_DMAR0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f)
> +#define ACPI_DMAR1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f)
> +#define ACPI_DMAR2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_ATSR,f)
> +#define ACPI_DMAR3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f)
> +#define ACPI_EINJ0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> +#define ACPI_ERST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
> +#define ACPI_FPDTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
> +#define ACPI_FPDT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT,f)
> +#define ACPI_FPDT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_PTR,f)
> +#define ACPI_HEST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
> +#define ACPI_HEST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
> +#define ACPI_HEST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
> +#define ACPI_HEST6_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_AER_ROOT,f)
> +#define ACPI_HEST7_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_AER,f)
> +#define ACPI_HEST8_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_AER_BRIDGE,f)
> +#define ACPI_HEST9_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_GENERIC,f)
> +#define ACPI_HESTN_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
> +#define ACPI_HESTB_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
> +#define ACPI_IVRSH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_IVRS_HEADER,f)
> +#define ACPI_IVRS0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f)
> +#define ACPI_IVRS1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_IVRS_MEMORY,f)
> +#define ACPI_IVRSD_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f)
> +#define ACPI_IVRS8A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f)
> +#define ACPI_IVRS8B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f)
> +#define ACPI_IVRS8C_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f)
> +#define ACPI_MADT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f)
> +#define ACPI_MADT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_IO_APIC,f)
> +#define ACPI_MADT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f)
> +#define ACPI_MADT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f)
> +#define ACPI_MADT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f)
> +#define ACPI_MADT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f)
> +#define ACPI_MADT6_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f)
> +#define ACPI_MADT7_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f)
> +#define ACPI_MADT8_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f)
> +#define ACPI_MADT9_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC,f)
> +#define ACPI_MADT10_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f)
> +#define ACPI_MADT11_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f)
> +#define ACPI_MADT12_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_DISTRIBUTOR,f)
> +#define ACPI_MADTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> +#define ACPI_MCFG0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
> +#define ACPI_MPST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f)
> +#define ACPI_MPST0A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_STATE,f)
> +#define ACPI_MPST0B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPST_COMPONENT,f)
> +#define ACPI_MPST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPST_DATA_HDR,f)
> +#define ACPI_MPST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_DATA,f)
> +#define ACPI_MSCT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f)
> +#define ACPI_PCCT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f)
> +#define ACPI_PMTT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PMTT_SOCKET,f)
> +#define ACPI_PMTT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PMTT_CONTROLLER,f)
> +#define ACPI_PMTT1A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_PMTT_DOMAIN,f)
> +#define ACPI_PMTT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PMTT_PHYSICAL_COMPONENT,f)
> +#define ACPI_PMTTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PMTT_HEADER,f)
> +#define ACPI_S3PTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_S3PT_HEADER,f)
> +#define ACPI_S3PT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f)
> +#define ACPI_S3PT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f)
> +#define ACPI_SLICH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SLIC_HEADER,f)
> +#define ACPI_SLIC0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SLIC_KEY,f)
> +#define ACPI_SLIC1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SLIC_MARKER,f)
> +#define ACPI_SRATH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
> +#define ACPI_SRAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f)
> +#define ACPI_SRAT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f)
> +#define ACPI_SRAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
> +#define ACPI_WDAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
>
>  /*
>  * Simplify access to flag fields by breaking them up into bytes
>  */
> -#define ACPI_FLAG_OFFSET(d,f,o)         (UINT8) (ACPI_OFFSET (d,f) + o)
> +#define ACPI_FLAG_OFFSET(d,f,o)         (UINT16) (ACPI_OFFSET (d,f) + o)
>
>  /* Flags */
>
> @@ -250,6 +276,7 @@
>  #define ACPI_SRAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_CPU_AFFINITY,f,o)
>  #define ACPI_SRAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o)
>  #define ACPI_SRAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
> +#define ACPI_GTDT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o)
>  #define ACPI_MADT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o)
>  #define ACPI_MADT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o)
>  #define ACPI_MADT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f,o)
> @@ -259,6 +286,11 @@
>  #define ACPI_MADT8_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f,o)
>  #define ACPI_MADT9_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC,f,o)
>  #define ACPI_MADT10_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o)
> +#define ACPI_MADT11_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f,o)
> +#define ACPI_MPST0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o)
> +#define ACPI_MPST2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o)
> +#define ACPI_PCCT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_PCCT,f,o)
> +#define ACPI_PMTTH_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_PMTT_HEADER,f,o)
>  #define ACPI_WDDT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_WDDT,f,o)
>  #define ACPI_EINJ0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o)
>  #define ACPI_ERST0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o)
> @@ -270,6 +302,7 @@
>  * Required terminator for all tables below
>  */
>  #define ACPI_DMT_TERMINATOR             {ACPI_DMT_EXIT, 0, NULL, 0}
> +#define ACPI_DMT_NEW_LINE               {ACPI_DMT_EXTRA_TEXT, 0, "\n", 0}
>
>
>  /*
> @@ -423,6 +456,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt1[] =
>     {ACPI_DMT_FLAG2,    ACPI_FADT_FLAG_OFFSET (BootFlags,0),        "VGA Not Present (V4)", 0},
>     {ACPI_DMT_FLAG3,    ACPI_FADT_FLAG_OFFSET (BootFlags,0),        "MSI Not Supported (V4)", 0},
>     {ACPI_DMT_FLAG4,    ACPI_FADT_FLAG_OFFSET (BootFlags,0),        "PCIe ASPM Not Supported (V4)", 0},
> +    {ACPI_DMT_FLAG5,    ACPI_FADT_FLAG_OFFSET (BootFlags,0),        "CMOS RTC Not Present (V5)", 0},
>
>     {ACPI_DMT_UINT8,    ACPI_FADT_OFFSET (Reserved),                "Reserved", 0},
>     {ACPI_DMT_UINT32,   ACPI_FADT_OFFSET (Flags),                   "Flags (decoded below)", DT_FLAG},
> @@ -455,6 +489,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt1[] =
>     {ACPI_DMT_FLAG1,    ACPI_FADT_FLAG_OFFSET (Flags,2),            "Remote Power-on capable (V4)", 0},
>     {ACPI_DMT_FLAG2,    ACPI_FADT_FLAG_OFFSET (Flags,2),            "Use APIC Cluster Model (V4)", 0},
>     {ACPI_DMT_FLAG3,    ACPI_FADT_FLAG_OFFSET (Flags,2),            "Use APIC Physical Destination Mode (V4)", 0},
> +    {ACPI_DMT_FLAG4,    ACPI_FADT_FLAG_OFFSET (Flags,2),            "Hardware Reduced (V5)", 0},
> +    {ACPI_DMT_FLAG5,    ACPI_FADT_FLAG_OFFSET (Flags,2),            "Low Power S0 Idle (V5)", 0},
>     ACPI_DMT_TERMINATOR
>  };
>
> @@ -468,7 +504,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt2[] =
>     ACPI_DMT_TERMINATOR
>  };
>
> -/* ACPI 2.0+ Extensions (FADT version 3+) */
> +/* ACPI 2.0+ Extensions (FADT version 3 and 4) */
>
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt3[] =
>  {
> @@ -488,6 +524,15 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt3[] =
>     ACPI_DMT_TERMINATOR
>  };
>
> +/* ACPI 5.0 Extensions (FADT version 5) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoFadt5[] =
> +{
> +    {ACPI_DMT_GAS,      ACPI_FADT_OFFSET (SleepControl),            "Sleep Control Register", 0},
> +    {ACPI_DMT_GAS,      ACPI_FADT_OFFSET (SleepStatus),             "Sleep Status Register", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
>
>  /*
>  * Remaining tables are not consumed directly by the ACPICA subsystem
> @@ -613,6 +658,24 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoBert[] =
>
>  /*******************************************************************************
>  *
> + * BGRT -  Boot Graphics Resource Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoBgrt[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_BGRT_OFFSET (Version),                 "Version", 0},
> +    {ACPI_DMT_UINT8,    ACPI_BGRT_OFFSET (Status),                  "Status", 0},
> +    {ACPI_DMT_UINT8,    ACPI_BGRT_OFFSET (ImageType),               "Image Type", 0},
> +    {ACPI_DMT_UINT64,   ACPI_BGRT_OFFSET (ImageAddress),            "Image Address", 0},
> +    {ACPI_DMT_UINT32,   ACPI_BGRT_OFFSET (ImageOffsetX),            "Image OffsetX", 0},
> +    {ACPI_DMT_UINT32,   ACPI_BGRT_OFFSET (ImageOffsetY),            "Image OffsetY", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
>  * BOOT - Simple Boot Flag Table
>  *
>  ******************************************************************************/
> @@ -744,6 +807,19 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar3[] =
>
>  /*******************************************************************************
>  *
> + * DRTM - Dynamic Root of Trust for Measurement table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm[] =
> +{
> +
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
>  * ECDT - Embedded Controller Boot Resources Table
>  *
>  ******************************************************************************/
> @@ -820,6 +896,82 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoErst0[] =
>
>  /*******************************************************************************
>  *
> + * FPDT - Firmware Performance Data Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +/* Main table consists of only the standard ACPI header - subtables follow */
> +
> +/* FPDT subtable header */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoFpdtHdr[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_FPDTH_OFFSET (Type),                   "Subtable Type", 0},
> +    {ACPI_DMT_UINT8,    ACPI_FPDTH_OFFSET (Length),                 "Length", DT_LENGTH},
> +    {ACPI_DMT_UINT8,    ACPI_FPDTH_OFFSET (Revision),               "Revision", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Firmware Basic Boot Performance Record */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoFpdt0[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_FPDT0_OFFSET (Reserved),               "Reserved", 0},
> +    {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (ResetEnd),               "Reset End", 0},
> +    {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (LoadStart),              "Load Image Start", 0},
> +    {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (StartupStart),           "Start Image Start", 0},
> +    {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (ExitServicesEntry),      "Exit Services Entry", 0},
> +    {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (ExitServicesExit),       "Exit Services Exit", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: S3 Performance Table Pointer Record */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoFpdt1[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_FPDT1_OFFSET (Reserved),               "Reserved", 0},
> +    {ACPI_DMT_UINT64,   ACPI_FPDT1_OFFSET (Address),                "S3PT Address", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * GTDT - Generic Timer Description Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt[] =
> +{
> +    {ACPI_DMT_UINT64,   ACPI_GTDT_OFFSET (Address),                 "Timer Address", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (Flags),                   "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (Flags,0),            "Memory Present", 0},
> +    ACPI_DMT_NEW_LINE,
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (SecurePl1Interrupt),      "Secure PL1 Interrupt", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (SecurePl1Flags),          "SPL1 Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (SecurePl1Flags,0),   "Trigger Mode", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (SecurePl1Flags,0),   "Polarity", 0},
> +    ACPI_DMT_NEW_LINE,
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecurePl1Interrupt),   "Non-Secure PL1 Interrupt", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecurePl1Flags),       "NSPL1 Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (NonSecurePl1Flags,0),"Trigger Mode", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (NonSecurePl1Flags,0),"Polarity", 0},
> +    ACPI_DMT_NEW_LINE,
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (VirtualTimerInterrupt),   "Virtual Timer Interrupt", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (VirtualTimerFlags),       "VT Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0},
> +    ACPI_DMT_NEW_LINE,
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecurePl2Interrupt),   "Non-Secure PL2 Interrupt", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecurePl2Flags),       "NSPL2 Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (NonSecurePl2Flags,0),"Trigger Mode", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (NonSecurePl2Flags,0),"Polarity", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
>  * HEST - Hardware Error Source table
>  *
>  ******************************************************************************/
> @@ -1262,6 +1414,34 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt10[] =
>     ACPI_DMT_TERMINATOR
>  };
>
> +/* 11: Generic Interrupt Controller (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (Reserved),              "Reserved", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (GicId),                 "Local GIC Hardware ID", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (Uid),                   "Processor UID", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (Flags),                 "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Processor Enabled", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (ParkingVersion),        "Parking Protocol Version", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (PerformanceInterrupt),  "Performance Interrupt", 0},
> +    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ParkedAddress),         "Parked Address", 0},
> +    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (BaseAddress),           "Base Address", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 12: Generic Interrupt Distributor (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt12[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_MADT12_OFFSET (Reserved),              "Reserved", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT12_OFFSET (GicId),                 "Local GIC Hardware ID", 0},
> +    {ACPI_DMT_UINT64,   ACPI_MADT12_OFFSET (BaseAddress),           "Base Address", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT12_OFFSET (GlobalIrqBase),         "Interrupt Base", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MADT12_OFFSET (Reserved2),             "Reserved", 0},
> +   ACPI_DMT_TERMINATOR
> +};
> +
>
>  /*******************************************************************************
>  *
> @@ -1312,6 +1492,87 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMchi[] =
>
>  /*******************************************************************************
>  *
> + * MPST - Memory Power State Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_MPST_OFFSET (Reserved1),               "Reserved", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MPST_OFFSET (ChannelId),               "Channel ID", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MPST_OFFSET (Reserved2),               "Reserved", 0},
> +    {ACPI_DMT_UINT16,   ACPI_MPST_OFFSET (PowerNodeCount),          "Power Node Count", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* MPST subtables */
> +
> +/* 0: Memory Power Node Structure */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst0[] =
> +{
> +    {ACPI_DMT_UINT8,    ACPI_MPST0_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_MPST0_FLAG_OFFSET (Flags,0),           "Node Enabled", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_MPST0_FLAG_OFFSET (Flags,0),           "Power Managed", 0},
> +    {ACPI_DMT_FLAG2,    ACPI_MPST0_FLAG_OFFSET (Flags,0),           "Hot Plug Capable", 0},
> +
> +    {ACPI_DMT_UINT8,    ACPI_MPST0_OFFSET (Reserved1),              "Reserved", 0},
> +    {ACPI_DMT_UINT16,   ACPI_MPST0_OFFSET (NodeId),                 "Node ID", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MPST0_OFFSET (Length),                 "Length", DT_LENGTH},
> +    {ACPI_DMT_UINT64,   ACPI_MPST0_OFFSET (RangeAddress),           "Range Address", 0},
> +    {ACPI_DMT_UINT64,   ACPI_MPST0_OFFSET (RangeLength),            "Range Length", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MPST0_OFFSET (NumPowerStates),         "Num Power States", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MPST0_OFFSET (NumPhysicalComponents),  "Num Physical Components", 0},
> +    {ACPI_DMT_UINT16,   ACPI_MPST0_OFFSET (Reserved2),              "Reserved", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0A: Sub-subtable - Memory Power State Structure (follows Memory Power Node above) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst0A[] =
> +{
> +    {ACPI_DMT_UINT8,    ACPI_MPST0A_OFFSET (PowerState),            "Power State", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MPST0A_OFFSET (InfoIndex),             "InfoIndex", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0B: Sub-subtable - Physical Component ID Structure (follows Memory Power State(s) above) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst0B[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_MPST0B_OFFSET (ComponentId),           "Component Id", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 01: Power Characteristics Count (follows all Power Node(s) above) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst1[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_MPST1_OFFSET (CharacteristicsCount),   "Characteristics Count", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 02: Memory Power State Characteristics Structure */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst2[] =
> +{
> +    {ACPI_DMT_UINT8,    ACPI_MPST2_OFFSET (Revision),               "Revision", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MPST2_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_MPST2_FLAG_OFFSET (Flags,0),           "Memory Preserved", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_MPST2_FLAG_OFFSET (Flags,0),           "Auto Entry", 0},
> +    {ACPI_DMT_FLAG2,    ACPI_MPST2_FLAG_OFFSET (Flags,0),           "Auto Exit", 0},
> +
> +    {ACPI_DMT_UINT16,   ACPI_MPST2_OFFSET (Reserved1),              "Reserved", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MPST2_OFFSET (AveragePower),           "Average Power", 0},
> +    {ACPI_DMT_UINT32,   ACPI_MPST2_OFFSET (PowerSaving),            "Power Saving", 0},
> +    {ACPI_DMT_UINT64,   ACPI_MPST2_OFFSET (ExitLatency),            "Exit Latency", 0},
> +    {ACPI_DMT_UINT64,   ACPI_MPST2_OFFSET (Reserved2),              "Reserved", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
>  * MSCT - Maximum System Characteristics Table (ACPI 4.0)
>  *
>  ******************************************************************************/
> @@ -1341,6 +1602,155 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMsct0[] =
>
>  /*******************************************************************************
>  *
> + * PCCT - Platform Communications Channel Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPcct[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_PCCT_OFFSET (Flags),                   "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_PCCT_FLAG_OFFSET (Flags,0),            "Doorbell", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PCCT_OFFSET (Latency),                 "Command Latency", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PCCT_OFFSET (Reserved),                "Reserved", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* PCCT subtables */
> +
> +/* 0: Generic Communications Subspace */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPcct0[] =
> +{
> +    {ACPI_DMT_UINT8,    ACPI_PCCT0_OFFSET (Header.Type),            "Subtable Type", 0},
> +    {ACPI_DMT_UINT8,    ACPI_PCCT0_OFFSET (Header.Length),          "Length", DT_LENGTH},
> +    {ACPI_DMT_UINT48,   ACPI_PCCT0_OFFSET (Reserved[0]),            "Reserved", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PCCT0_OFFSET (BaseAddress),            "Base Address", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PCCT0_OFFSET (Length),                 "Address Length", 0},
> +    {ACPI_DMT_GAS,      ACPI_PCCT0_OFFSET (DoorbellRegister),       "Doorbell Register", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PCCT0_OFFSET (PreserveMask),           "Preserve Mask", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PCCT0_OFFSET (WriteMask),              "Write Mask", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * PMTT - Platform Memory Topology Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPmtt[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_PMTT_OFFSET (Reserved),                "Reserved", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPmttHdr[] =
> +{
> +    {ACPI_DMT_PMTT,     ACPI_PMTTH_OFFSET (Type),                   "Subtable Type", 0},
> +    {ACPI_DMT_UINT8,    ACPI_PMTTH_OFFSET (Reserved1),              "Reserved", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTTH_OFFSET (Length),                 "Length", DT_LENGTH},
> +    {ACPI_DMT_UINT16,   ACPI_PMTTH_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_PMTTH_FLAG_OFFSET (Flags,0),           "Top-level Device", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_PMTTH_FLAG_OFFSET (Flags,0),           "Physical Element", 0},
> +    {ACPI_DMT_FLAGS2,   ACPI_PMTTH_FLAG_OFFSET (Flags,0),           "Memory Type", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTTH_OFFSET (Reserved2),              "Reserved", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* PMTT Subtables */
> +
> +/* 0: Socket */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPmtt0[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_PMTT0_OFFSET (SocketId),               "Socket ID", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTT0_OFFSET (Reserved),               "Reserved", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Memory Controller */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPmtt1[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_PMTT1_OFFSET (ReadLatency),            "Read Latency", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PMTT1_OFFSET (WriteLatency),           "Write Latency", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PMTT1_OFFSET (ReadBandwidth),          "Read Bandwidth", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PMTT1_OFFSET (WriteBandwidth),         "Write Bandwidth", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTT1_OFFSET (AccessWidth),            "Access Width", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTT1_OFFSET (Alignment),              "Alignment", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTT1_OFFSET (Reserved),               "Reserved", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTT1_OFFSET (DomainCount),            "Domain Count", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1a: Proximity Domain */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPmtt1a[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_PMTT1A_OFFSET (ProximityDomain),       "Proximity Domain", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Physical Component */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoPmtt2[] =
> +{
> +    {ACPI_DMT_UINT16,   ACPI_PMTT2_OFFSET (ComponentId),            "Component ID", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PMTT2_OFFSET (Reserved),               "Reserved", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PMTT2_OFFSET (MemorySize),             "Memory Size", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PMTT2_OFFSET (BiosHandle),             "Bios Handle", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * S3PT - S3 Performance Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoS3pt[] =
> +{
> +    {ACPI_DMT_SIG,     ACPI_S3PT_OFFSET (Signature[0]),             "Signature", 0},
> +    {ACPI_DMT_UINT32,  ACPI_S3PT_OFFSET (Length),                   "Length", DT_LENGTH},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* S3PT subtable header */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoS3ptHdr[] =
> +{
> +    {ACPI_DMT_UINT16,  ACPI_S3PTH_OFFSET (Type),                    "Type", 0},
> +    {ACPI_DMT_UINT8,   ACPI_S3PTH_OFFSET (Length),                  "Length", DT_LENGTH},
> +    {ACPI_DMT_UINT8,   ACPI_S3PTH_OFFSET (Revision),                "Revision", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Basic S3 Resume Performance Record */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoS3pt0[] =
> +{
> +    {ACPI_DMT_UINT32,  ACPI_S3PT0_OFFSET (ResumeCount),             "Resume Count", 0},
> +    {ACPI_DMT_UINT64,  ACPI_S3PT0_OFFSET (FullResume),              "Full Resume", 0},
> +    {ACPI_DMT_UINT64,  ACPI_S3PT0_OFFSET (AverageResume),           "Average Resume", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Basic S3 Suspend Performance Record */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoS3pt1[] =
> +{
> +    {ACPI_DMT_UINT64,  ACPI_S3PT1_OFFSET (SuspendStart),            "Suspend Start", 0},
> +    {ACPI_DMT_UINT64,  ACPI_S3PT1_OFFSET (SuspendEnd),              "Suspend End", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
>  * SBST - Smart Battery Specification Table
>  *
>  ******************************************************************************/
> @@ -1681,8 +2091,10 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoWdrt[] =
>     ACPI_DMT_TERMINATOR
>  };
>
> +/*! [Begin] no source code translation */
> +
>  /*
> - * Generic types (used in UEFI)
> + * Generic types (used in UEFI and custom tables)
>  *
>  * Examples:
>  *
> @@ -1701,7 +2113,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoWdrt[] =
>  * DevicePath : "\PciRoot(0)\Pci(0x1f,1)\Usb(0,0)"
>  */
>
> -#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName)\
> +#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName) \
>     {{FieldType, 0, FieldName, 0}, ACPI_DMT_TERMINATOR}
>
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoGeneric[][2] =
> @@ -1710,6 +2122,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoGeneric[][2] =
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT16,     "UINT16"),
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT24,     "UINT24"),
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT32,     "UINT32"),
> +    ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT40,     "UINT40"),
> +    ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT48,     "UINT48"),
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT56,     "UINT56"),
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT64,     "UINT64"),
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING,     "String"),
> @@ -1720,3 +2134,4 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoGeneric[][2] =
>     ACPI_DM_GENERIC_ENTRY (ACPI_DMT_LABEL,      "Label"),
>     {ACPI_DMT_TERMINATOR}
>  };
> +/*! [End] no source code translation !*/
> diff --git a/src/acpica/source/compiler/aslanalyze.c b/src/acpica/source/compiler/aslanalyze.c
> index 256ea6f..4a39e41 100644
> --- a/src/acpica/source/compiler/aslanalyze.c
> +++ b/src/acpica/source/compiler/aslanalyze.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -198,7 +198,6 @@ AnCheckId (
>  {
>     UINT32                  i;
>     ACPI_SIZE               Length;
> -    UINT32                  AlphaPrefixLength;
>
>
>     /* Only care about string versions of _HID/_CID (integers are legal) */
> @@ -246,12 +245,18 @@ AnCheckId (
>         {
>             AslError (ASL_ERROR, ASL_MSG_ALPHANUMERIC_STRING,
>                 Op, Op->Asl.Value.String);
> -            break;
> +            return;
>         }
>     }
>
> -    /* _HID String must be of the form "XXX####" or "ACPI####" */
> -
> +    /*
> +     * _HID String must be one of these forms:
> +     *
> +     * "AAA####"    A is an uppercase letter and # is a hex digit
> +     * "ACPI####"   # is a hex digit
> +     * "NNNN####"   N is an uppercase letter or decimal digit (0-9)
> +     *              # is a hex digit (ACPI 5.0)
> +     */
>     if ((Length < 7) || (Length > 8))
>     {
>         AslError (ASL_ERROR, ASL_MSG_HID_LENGTH,
> @@ -259,22 +264,48 @@ AnCheckId (
>         return;
>     }
>
> -    /* _HID Length is valid, now check for uppercase (first 3 or 4 chars) */
> +    /* _HID Length is valid (7 or 8), now check the prefix (first 3 or 4 chars) */
>
> -    AlphaPrefixLength = 3;
> -    if (Length >= 8)
> +    if (Length == 7)
>     {
> -        AlphaPrefixLength = 4;
> +        /* AAA####: Ensure the alphabetic prefix is all uppercase */
> +
> +        for (i = 0; i < 3; i++)
> +        {
> +            if (!isupper ((int) Op->Asl.Value.String[i]))
> +            {
> +                AslError (ASL_ERROR, ASL_MSG_UPPER_CASE,
> +                    Op, &Op->Asl.Value.String[i]);
> +                return;
> +            }
> +        }
> +    }
> +    else /* Length == 8 */
> +    {
> +        /*
> +         * ACPI#### or NNNN####:
> +         * Ensure the prefix contains only uppercase alpha or decimal digits
> +         */
> +        for (i = 0; i < 4; i++)
> +        {
> +            if (!isupper ((int) Op->Asl.Value.String[i]) &&
> +                !isdigit ((int) Op->Asl.Value.String[i]))
> +            {
> +                AslError (ASL_ERROR, ASL_MSG_HID_PREFIX,
> +                    Op, &Op->Asl.Value.String[i]);
> +                return;
> +            }
> +        }
>     }
>
> -    /* Ensure the alphabetic prefix is all uppercase */
> +    /* Remaining characters (suffix) must be hex digits */
>
> -    for (i = 0; (i < AlphaPrefixLength) && Op->Asl.Value.String[i]; i++)
> +    for (; i < Length; i++)
>     {
> -        if (!isupper ((int) Op->Asl.Value.String[i]))
> +        if (!isxdigit ((int) Op->Asl.Value.String[i]))
>         {
> -            AslError (ASL_ERROR, ASL_MSG_UPPER_CASE,
> -                Op, &Op->Asl.Value.String[i]);
> +         AslError (ASL_ERROR, ASL_MSG_HID_SUFFIX,
> +            Op, &Op->Asl.Value.String[i]);
>             break;
>         }
>     }
> diff --git a/src/acpica/source/compiler/aslbtypes.c b/src/acpica/source/compiler/aslbtypes.c
> index d170671..962ae7a 100644
> --- a/src/acpica/source/compiler/aslbtypes.c
> +++ b/src/acpica/source/compiler/aslbtypes.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 715e537..2252ab4 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -336,19 +336,24 @@ CgWriteAmlOpcode (
>         /* These opcodes should not get here */
>
>         printf ("Found a node with an unassigned AML opcode\n");
> -        fprintf (stderr, "Found a node with an unassigned AML opcode\n");
> +        FlPrintFile (ASL_FILE_STDERR, "Found a node with an unassigned AML opcode\n");
>         return;
>
>     case AML_INT_RESERVEDFIELD_OP:
>
>         /* Special opcodes for within a field definition */
>
> -        Aml.Opcode = 0x00;
> +        Aml.Opcode = AML_FIELD_OFFSET_OP;
>         break;
>
>     case AML_INT_ACCESSFIELD_OP:
>
> -        Aml.Opcode = 0x01;
> +        Aml.Opcode = AML_FIELD_ACCESS_OP;
> +        break;
> +
> +    case AML_INT_CONNECTION_OP:
> +
> +        Aml.Opcode = AML_FIELD_CONNECTION_OP;
>         break;
>
>     default:
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5becc6e..371a6e3 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -314,10 +314,10 @@ CmFlushSourceCode (
>
>     while (FlReadFile (ASL_FILE_INPUT, &Buffer, 1) != AE_ERROR)
>     {
> -        InsertLineBuffer ((int) Buffer);
> +        AslInsertLineBuffer ((int) Buffer);
>     }
>
> -    ResetCurrentLineBuffer ();
> +    AslResetCurrentLineBuffer ();
>  }
>
>
> @@ -529,6 +529,21 @@ CmDoCompile (
>     Event = UtBeginEvent ("Open input and output files");
>     UtEndEvent (Event);
>
> +    Event = UtBeginEvent ("Preprocess input file");
> +    if (Gbl_PreprocessFlag)
> +    {
> +        /* Preprocessor */
> +
> +        PrDoPreprocess ();
> +        if (Gbl_PreprocessOnly)
> +        {
> +            UtEndEvent (Event);
> +            CmCleanupAndExit ();
> +            return 0;
> +        }
> +    }
> +    UtEndEvent (Event);
> +
>     /* Build the parse tree */
>
>     Event = UtBeginEvent ("Parse source code and build parse tree");
> @@ -544,8 +559,18 @@ CmDoCompile (
>
>     if (!RootNode)
>     {
> -        CmCleanupAndExit ();
> -        return -1;
> +        /*
> +         * If there are no errors, then we have some sort of
> +         * internal problem.
> +         */
> +        Status = AslCheckForErrorExit ();
> +        if (Status == AE_OK)
> +        {
> +            AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL,
> +                NULL, "- Could not resolve parse tree root node");
> +        }
> +
> +        goto ErrorExit;
>     }
>
>     /* Optional parse tree dump, compiler debug output only */
> @@ -578,12 +603,12 @@ CmDoCompile (
>      */
>     Event = UtBeginEvent ("Open AML output file");
>     Status = FlOpenAmlOutputFile (Gbl_OutputFilenamePrefix);
> +    UtEndEvent (Event);
>     if (ACPI_FAILURE (Status))
>     {
>         AePrintErrorLog (ASL_FILE_STDERR);
>         return -1;
>     }
> -    UtEndEvent (Event);
>
>     /* Interpret and generate all compile-time constants */
>
> @@ -613,15 +638,16 @@ CmDoCompile (
>
>     if (Gbl_ParseOnlyFlag)
>     {
> -        AePrintErrorLog (ASL_FILE_STDOUT);
> -        UtDisplaySummary (ASL_FILE_STDOUT);
> +        AePrintErrorLog (ASL_FILE_STDERR);
> +        UtDisplaySummary (ASL_FILE_STDERR);
>         if (Gbl_DebugFlag)
>         {
> -            /* Print error summary to the debug file */
> +            /* Print error summary to the stdout also */
>
> -            AePrintErrorLog (ASL_FILE_STDERR);
> -            UtDisplaySummary (ASL_FILE_STDERR);
> +            AePrintErrorLog (ASL_FILE_STDOUT);
> +            UtDisplaySummary (ASL_FILE_STDOUT);
>         }
> +        UtEndEvent (FullCompile);
>         return 0;
>     }
>
> @@ -636,7 +662,7 @@ CmDoCompile (
>     UtEndEvent (Event);
>     if (ACPI_FAILURE (Status))
>     {
> -        return -1;
> +        goto ErrorExit;
>     }
>
>     /* Namespace cross-reference */
> @@ -645,7 +671,7 @@ CmDoCompile (
>     Status = LkCrossReferenceNamespace ();
>     if (ACPI_FAILURE (Status))
>     {
> -        return -1;
> +        goto ErrorExit;
>     }
>
>     /* Namespace - Check for non-referenced objects */
> @@ -716,6 +742,11 @@ CmDoCompile (
>     UtEndEvent (FullCompile);
>     CmCleanupAndExit ();
>     return 0;
> +
> +ErrorExit:
> +    UtEndEvent (FullCompile);
> +    CmCleanupAndExit ();
> +    return (-1);
>  }
>
>
> @@ -810,12 +841,12 @@ CmCleanupAndExit (
>     UINT32                  i;
>
>
> -    AePrintErrorLog (ASL_FILE_STDOUT);
> +    AePrintErrorLog (ASL_FILE_STDERR);
>     if (Gbl_DebugFlag)
>     {
> -        /* Print error summary to the debug file */
> +        /* Print error summary to stdout also */
>
> -        AePrintErrorLog (ASL_FILE_STDERR);
> +        AePrintErrorLog (ASL_FILE_STDOUT);
>     }
>
>     DbgPrint (ASL_DEBUG_OUTPUT, "\n\nElapsed time for major events\n\n");
> @@ -869,7 +900,9 @@ CmCleanupAndExit (
>
>     /* Close all open files */
>
> -    for (i = 2; i < ASL_MAX_FILE_TYPE; i++)
> +    Gbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL; /* the .i file is same as source file */
> +
> +    for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
>     {
>         FlCloseFile (i);
>     }
> @@ -887,6 +920,20 @@ CmCleanupAndExit (
>         }
>     }
>
> +    /* Delete the preprocessor output file (.i) unless -li flag is set */
> +
> +    if (!Gbl_PreprocessorOutputFlag &&
> +        Gbl_PreprocessFlag &&
> +        Gbl_Files[ASL_FILE_PREPROCESSOR].Filename)
> +    {
> +        if (remove (Gbl_Files[ASL_FILE_PREPROCESSOR].Filename))
> +        {
> +            printf ("%s: ",
> +                Gbl_Files[ASL_FILE_PREPROCESSOR].Filename);
> +            perror ("Could not delete preprocessor .i file");
> +        }
> +    }
> +
>     /*
>      * Delete intermediate ("combined") source file (if -ls flag not set)
>      * This file is created during normal ASL/AML compiles. It is not
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index ba5b7f8..29558fc 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -147,6 +147,7 @@
>  #include "asltypes.h"
>  #include "aslmessages.h"
>  #include "aslglobal.h"
> +#include "preprocess.h"
>
>
>  /*******************************************************************************
> @@ -156,7 +157,7 @@
>  ******************************************************************************/
>
>  /*
> - * parser - generated from flex/bison, lex/yacc, etc.
> + * Main ASL parser - generated from flex/bison, lex/yacc, etc.
>  */
>  int
>  AslCompilerparse(
> @@ -171,11 +172,11 @@ AslCompilerlex(
>     void);
>
>  void
> -ResetCurrentLineBuffer (
> +AslResetCurrentLineBuffer (
>     void);
>
>  void
> -InsertLineBuffer (
> +AslInsertLineBuffer (
>     int                     SourceChar);
>
>  int
> @@ -207,6 +208,11 @@ ACPI_STATUS
>  AslDoOneFile (
>     char                    *Filename);
>
> +ACPI_STATUS
> +AslCheckForErrorExit (
> +    void);
> +
> +
>  /*
>  * aslcompile - compile mainline
>  */
> @@ -375,6 +381,16 @@ AslCommonError (
>     char                    *ExtraMessage);
>
>  void
> +AslCommonError2 (
> +    UINT8                   Level,
> +    UINT8                   MessageId,
> +    UINT32                  LineNumber,
> +    UINT32                  Column,
> +    char                    *SourceLine,
> +    char                    *Filename,
> +    char                    *ExtraMessage);
> +
> +void
>  AePrintException (
>     UINT32                  FileId,
>     ASL_ERROR_MSG           *Enode,
> @@ -706,7 +722,11 @@ FlPrintFile (
>
>  void
>  FlSetLineNumber (
> -    ACPI_PARSE_OBJECT       *Op);
> +    UINT32                  LineNumber);
> +
> +void
> +FlSetFilename (
> +    char                    *Filename);
>
>  ACPI_STATUS
>  FlOpenInputFile (
> @@ -901,21 +921,23 @@ RsAllocateResourceNode (
>     UINT32                  Size);
>
>  void
> -RsCreateBitField (
> +RsCreateResourceField (
>     ACPI_PARSE_OBJECT       *Op,
>     char                    *Name,
>     UINT32                  ByteOffset,
> -    UINT32                  BitOffset);
> +    UINT32                  BitOffset,
> +    UINT32                  BitLength);
>
>  void
> -RsCreateByteField (
> +RsSetFlagBits (
> +    UINT8                   *Flags,
>     ACPI_PARSE_OBJECT       *Op,
> -    char                    *Name,
> -    UINT32                  ByteOffset);
> +    UINT8                   Position,
> +    UINT8                   DefaultBit);
>
>  void
> -RsSetFlagBits (
> -    UINT8                   *Flags,
> +RsSetFlagBits16 (
> +    UINT16                  *Flags,
>     ACPI_PARSE_OBJECT       *Op,
>     UINT8                   Position,
>     UINT8                   DefaultBit);
> @@ -1003,6 +1025,11 @@ RsDoDmaDescriptor (
>     UINT32                  CurrentByteOffset);
>
>  ASL_RESOURCE_NODE *
> +RsDoFixedDmaDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
>  RsDoFixedIoDescriptor (
>     ACPI_PARSE_OBJECT       *Op,
>     UINT32                  CurrentByteOffset);
> @@ -1041,6 +1068,30 @@ RsDoGeneralRegisterDescriptor (
>     ACPI_PARSE_OBJECT       *Op,
>     UINT32                  CurrentByteOffset);
>
> +ASL_RESOURCE_NODE *
> +RsDoGpioIntDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoGpioIoDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoI2cSerialBusDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoSpiSerialBusDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset);
> +
> +ASL_RESOURCE_NODE *
> +RsDoUartSerialBusDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset);
>
>  /*
>  * aslrestype2d - DWord address descriptors
> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
> index 4215ee3..f911072 100644
> --- a/src/acpica/source/compiler/aslcompiler.l
> +++ b/src/acpica/source/compiler/aslcompiler.l
> @@ -1,8 +1,7 @@
> -
>  %{
>  /******************************************************************************
>  *
> - * Module Name: aslcompiler.l - Flex input file
> + * Module Name: aslcompiler.l - Flex/lex input file
>  *
>  *****************************************************************************/
>
> @@ -10,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -131,22 +130,31 @@ YYSTYPE AslCompilerlval;
>  */
>
>  #define _COMPONENT          ACPI_COMPILER
> -        ACPI_MODULE_NAME    ("aslscan")
> -char
> -comment (void);
> -char
> -comment2 (void);
> -void
> +        ACPI_MODULE_NAME    ("aslscanner")
> +
> +
> +/* Local prototypes */
> +
> +static void
> +AslDoLineDirective (void);
> +
> +static char
> +AslDoComment (void);
> +
> +static char
> +AslDoCommentType2 (void);
> +
> +static char
> +AslDoStringLiteral (void);
> +
> +static void
>  count (int type);
> -char
> -literal (void);
> -void
> -copy (void);
> +
>
>  /*! [Begin] no source code translation */
>
>  %}
> -
> +    /* Definitions */
>
>  LeadNameChar                [A-Za-z_]
>  DigitChar                   [0-9]
> @@ -166,6 +174,7 @@ NonEmptyNamePath            {NameSeg}{NamePathTail}*
>  NamePathTail                [.]{NameSeg}
>
>  %%
> +    /* Rules */
>
>  [ ]                         { count (0); }
>  [\n]                        { count (0); } /* Handle files with both LF and CR/LF */
> @@ -173,10 +182,11 @@ NamePathTail                [.]{NameSeg}
>  [ \t]                       { count (0); }
>
>
> -"/*"                        { if (!comment ()) yyterminate (); }
> -"//"                        { if (!comment2 ()) yyterminate (); }
> +"/*"                        { if (!AslDoComment ()) yyterminate (); }
> +"//"                        { if (!AslDoCommentType2 ()) yyterminate (); }
>
> -"\""                        { if (literal ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); }
> +"\""                        { if (AslDoStringLiteral ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); }
> +";"                         { count (0); return(';'); }
>
>
>  0[xX]{HexDigitChar}+ |
> @@ -184,77 +194,66 @@ NamePathTail                [.]{NameSeg}
>                                 count (1); return (PARSEOP_INTEGER); }
>
>  "Include"                   { count (1); return (PARSEOP_INCLUDE); }
> -"#include"                  { count (1); return (PARSEOP_INCLUDE_CSTYLE); }
> -"#line"                                                { count (1); return (PARSEOP_LINE_CSTYLE); }
>  "External"                  { count (1); return (PARSEOP_EXTERNAL); }
>
> + /*
> +  * The #line directive is emitted by the preprocessor and handled
> +  * here in the main iASL lexer - simply set the line number and
> +  * optionally the current filename.
> +  */
> +"#line"                     { AslDoLineDirective ();}
>
> -"Ones"                      { count (1); return (PARSEOP_ONES); }
> -"One"                       { count (1); return (PARSEOP_ONE); }
> -"Zero"                      { count (1); return (PARSEOP_ZERO); }
> -"Revision"                  { count (1); return (PARSEOP_REVISION); }
>
> -"Offset"                    { count (1); return (PARSEOP_OFFSET); }
> + /****************************************************************************
> +  *
> +  * Main ASL operators
> +  *
> +  ****************************************************************************/
> +
>  "AccessAs"                  { count (1); return (PARSEOP_ACCESSAS); }
> -"BankField"                 { count (2); return (PARSEOP_BANKFIELD); }
> -"CreateBitField"            { count (2); return (PARSEOP_CREATEBITFIELD); }
> -"CreateByteField"           { count (2); return (PARSEOP_CREATEBYTEFIELD); }
> -"CreateDWordField"          { count (2); return (PARSEOP_CREATEDWORDFIELD); }
> -"CreateField"               { count (2); return (PARSEOP_CREATEFIELD); }
> -"CreateQWordField"          { count (2); return (PARSEOP_CREATEQWORDFIELD); }
> -"CreateWordField"           { count (2); return (PARSEOP_CREATEWORDFIELD); }
> -"DataTableRegion"           { count (2); return (PARSEOP_DATATABLEREGION); }
> -"Device"                    { count (2); return (PARSEOP_DEVICE); }
> -"Event"                     { count (2); return (PARSEOP_EVENT); }
> -"Field"                     { count (2); return (PARSEOP_FIELD); }
> -"Function"                  { count (2); return (PARSEOP_FUNCTION); }
> -"IndexField"                { count (2); return (PARSEOP_INDEXFIELD); }
> -"Method"                    { count (2); return (PARSEOP_METHOD); }
> -"Mutex"                     { count (2); return (PARSEOP_MUTEX); }
> -"OperationRegion"           { count (2); return (PARSEOP_OPERATIONREGION); }
> -"PowerResource"             { count (2); return (PARSEOP_POWERRESOURCE); }
> -"Processor"                 { count (2); return (PARSEOP_PROCESSOR); }
> -"ThermalZone"               { count (2); return (PARSEOP_THERMALZONE); }
> +"Acquire"                   { count (3); return (PARSEOP_ACQUIRE); }
> +"Add"                       { count (3); return (PARSEOP_ADD); }
>  "Alias"                     { count (2); return (PARSEOP_ALIAS); }
> -"Name"                      { count (2); return (PARSEOP_NAME); }
> -"Scope"                     { count (2); return (PARSEOP_SCOPE); }
> +"And"                       { count (3); return (PARSEOP_AND); }
> +"BankField"                 { count (2); return (PARSEOP_BANKFIELD); }
>  "Break"                     { count (3); return (PARSEOP_BREAK); }
>  "BreakPoint"                { count (3); return (PARSEOP_BREAKPOINT); }
> -"Continue"                  { count (3); return (PARSEOP_CONTINUE); }
> -"Fatal"                     { count (3); return (PARSEOP_FATAL); }
> -"If"                        { count (3); return (PARSEOP_IF); }
> -"Else"                      { count (3); return (PARSEOP_ELSE); }
> -"ElseIf"                    { count (3); return (PARSEOP_ELSEIF); }
> -"Load"                      { count (3); return (PARSEOP_LOAD); }
> -"Noop"                      { count (3); return (PARSEOP_NOOP); }
> -"Notify"                    { count (3); return (PARSEOP_NOTIFY); }
> -"Release"                   { count (3); return (PARSEOP_RELEASE); }
> -"Reset"                     { count (3); return (PARSEOP_RESET); }
> -"Return"                    { count (3); return (PARSEOP_RETURN); }
> -"Signal"                    { count (3); return (PARSEOP_SIGNAL); }
> -"Sleep"                     { count (3); return (PARSEOP_SLEEP); }
> -"Stall"                     { count (3); return (PARSEOP_STALL); }
> -"Switch"                    { count (3); return (PARSEOP_SWITCH); }
> +"Buffer"                    { count (1); return (PARSEOP_BUFFER); }
>  "Case"                      { count (3); return (PARSEOP_CASE); }
> -"Default"                   { count (3); return (PARSEOP_DEFAULT); }
> -"Unload"                    { count (3); return (PARSEOP_UNLOAD); }
> -"While"                     { count (3); return (PARSEOP_WHILE); }
> -
> -"Acquire"                   { count (3); return (PARSEOP_ACQUIRE); }
> -"Add"                       { count (3); return (PARSEOP_ADD); }
> -"And"                       { count (3); return (PARSEOP_AND); }
>  "Concatenate"               { count (3); return (PARSEOP_CONCATENATE); }
>  "ConcatenateResTemplate"    { count (3); return (PARSEOP_CONCATENATERESTEMPLATE); }
>  "CondRefOf"                 { count (3); return (PARSEOP_CONDREFOF); }
> +"Connection"                { count (2); return (PARSEOP_CONNECTION); }
> +"Continue"                  { count (3); return (PARSEOP_CONTINUE); }
>  "CopyObject"                { count (3); return (PARSEOP_COPYOBJECT); }
> +"CreateBitField"            { count (2); return (PARSEOP_CREATEBITFIELD); }
> +"CreateByteField"           { count (2); return (PARSEOP_CREATEBYTEFIELD); }
> +"CreateDWordField"          { count (2); return (PARSEOP_CREATEDWORDFIELD); }
> +"CreateField"               { count (2); return (PARSEOP_CREATEFIELD); }
> +"CreateQWordField"          { count (2); return (PARSEOP_CREATEQWORDFIELD); }
> +"CreateWordField"           { count (2); return (PARSEOP_CREATEWORDFIELD); }
> +"DataTableRegion"           { count (2); return (PARSEOP_DATATABLEREGION); }
> +"Debug"                     { count (1); return (PARSEOP_DEBUG); }
>  "Decrement"                 { count (3); return (PARSEOP_DECREMENT); }
> +"Default"                   { count (3); return (PARSEOP_DEFAULT); }
> +"DefinitionBlock"           { count (1); return (PARSEOP_DEFINITIONBLOCK); }
>  "DeRefOf"                   { count (3); return (PARSEOP_DEREFOF); }
> +"Device"                    { count (2); return (PARSEOP_DEVICE); }
>  "Divide"                    { count (3); return (PARSEOP_DIVIDE); }
> +"Eisaid"                    { count (1); return (PARSEOP_EISAID); }
> +"Else"                      { count (3); return (PARSEOP_ELSE); }
> +"ElseIf"                    { count (3); return (PARSEOP_ELSEIF); }
> +"Event"                     { count (2); return (PARSEOP_EVENT); }
> +"Fatal"                     { count (3); return (PARSEOP_FATAL); }
> +"Field"                     { count (2); return (PARSEOP_FIELD); }
>  "FindSetLeftBit"            { count (3); return (PARSEOP_FINDSETLEFTBIT); }
>  "FindSetRightBit"           { count (3); return (PARSEOP_FINDSETRIGHTBIT); }
> -"FromBCD"                   { count (3); return (PARSEOP_FROMBCD); }
> +"FromBcd"                   { count (3); return (PARSEOP_FROMBCD); }
> +"Function"                  { count (2); return (PARSEOP_FUNCTION); }
> +"If"                        { count (3); return (PARSEOP_IF); }
>  "Increment"                 { count (3); return (PARSEOP_INCREMENT); }
>  "Index"                     { count (3); return (PARSEOP_INDEX); }
> +"IndexField"                { count (2); return (PARSEOP_INDEXFIELD); }
>  "LAnd"                      { count (3); return (PARSEOP_LAND); }
>  "LEqual"                    { count (3); return (PARSEOP_LEQUAL); }
>  "LGreater"                  { count (3); return (PARSEOP_LGREATER); }
> @@ -263,32 +262,62 @@ NamePathTail                [.]{NameSeg}
>  "LLessEqual"                { count (3); return (PARSEOP_LLESSEQUAL); }
>  "LNot"                      { count (3); return (PARSEOP_LNOT); }
>  "LNotEqual"                 { count (3); return (PARSEOP_LNOTEQUAL); }
> +"Load"                      { count (3); return (PARSEOP_LOAD); }
>  "LoadTable"                 { count (3); return (PARSEOP_LOADTABLE); }
>  "LOr"                       { count (3); return (PARSEOP_LOR); }
>  "Match"                     { count (3); return (PARSEOP_MATCH); }
> +"Method"                    { count (2); return (PARSEOP_METHOD); }
>  "Mid"                       { count (3); return (PARSEOP_MID); }
>  "Mod"                       { count (3); return (PARSEOP_MOD); }
>  "Multiply"                  { count (3); return (PARSEOP_MULTIPLY); }
> +"Mutex"                     { count (2); return (PARSEOP_MUTEX); }
> +"Name"                      { count (2); return (PARSEOP_NAME); }
>  "NAnd"                      { count (3); return (PARSEOP_NAND); }
> +"Noop"                      { count (3); return (PARSEOP_NOOP); }
>  "NOr"                       { count (3); return (PARSEOP_NOR); }
>  "Not"                       { count (3); return (PARSEOP_NOT); }
> +"Notify"                    { count (3); return (PARSEOP_NOTIFY); }
>  "ObjectType"                { count (3); return (PARSEOP_OBJECTTYPE); }
> +"Offset"                    { count (1); return (PARSEOP_OFFSET); }
> +"One"                       { count (1); return (PARSEOP_ONE); }
> +"Ones"                      { count (1); return (PARSEOP_ONES); }
> +"OperationRegion"           { count (2); return (PARSEOP_OPERATIONREGION); }
>  "Or"                        { count (3); return (PARSEOP_OR); }
> +"Package"                   { count (1); return (PARSEOP_PACKAGE); }
> +"PowerResource"             { count (2); return (PARSEOP_POWERRESOURCE); }
> +"Processor"                 { count (2); return (PARSEOP_PROCESSOR); }
>  "RefOf"                     { count (3); return (PARSEOP_REFOF); }
> +"Release"                   { count (3); return (PARSEOP_RELEASE); }
> +"Reset"                     { count (3); return (PARSEOP_RESET); }
> +"Return"                    { count (3); return (PARSEOP_RETURN); }
> +"Revision"                  { count (1); return (PARSEOP_REVISION); }
> +"Scope"                     { count (2); return (PARSEOP_SCOPE); }
>  "ShiftLeft"                 { count (3); return (PARSEOP_SHIFTLEFT); }
>  "ShiftRight"                { count (3); return (PARSEOP_SHIFTRIGHT); }
> +"Signal"                    { count (3); return (PARSEOP_SIGNAL); }
>  "SizeOf"                    { count (3); return (PARSEOP_SIZEOF); }
> +"Sleep"                     { count (3); return (PARSEOP_SLEEP); }
> +"Stall"                     { count (3); return (PARSEOP_STALL); }
>  "Store"                     { count (3); return (PARSEOP_STORE); }
>  "Subtract"                  { count (3); return (PARSEOP_SUBTRACT); }
> +"Switch"                    { count (3); return (PARSEOP_SWITCH); }
> +"ThermalZone"               { count (2); return (PARSEOP_THERMALZONE); }
>  "Timer"                     { count (3); return (PARSEOP_TIMER); }
> -"ToBCD"                     { count (3); return (PARSEOP_TOBCD); }
> +"ToBcd"                     { count (3); return (PARSEOP_TOBCD); }
>  "ToBuffer"                  { count (3); return (PARSEOP_TOBUFFER); }
>  "ToDecimalString"           { count (3); return (PARSEOP_TODECIMALSTRING); }
>  "ToHexString"               { count (3); return (PARSEOP_TOHEXSTRING); }
>  "ToInteger"                 { count (3); return (PARSEOP_TOINTEGER); }
>  "ToString"                  { count (3); return (PARSEOP_TOSTRING); }
> +"ToUuid"                    { count (1); return (PARSEOP_TOUUID); }
> +"Unicode"                   { count (1); return (PARSEOP_UNICODE); }
> +"Unload"                    { count (3); return (PARSEOP_UNLOAD); }
>  "Wait"                      { count (3); return (PARSEOP_WAIT); }
> +"While"                     { count (3); return (PARSEOP_WHILE); }
>  "XOr"                       { count (3); return (PARSEOP_XOR); }
> +"Zero"                      { count (1); return (PARSEOP_ZERO); }
> +
> +    /* Control method arguments and locals */
>
>  "Arg0"                      { count (1); return (PARSEOP_ARG0); }
>  "Arg1"                      { count (1); return (PARSEOP_ARG1); }
> @@ -297,7 +326,6 @@ NamePathTail                [.]{NameSeg}
>  "Arg4"                      { count (1); return (PARSEOP_ARG4); }
>  "Arg5"                      { count (1); return (PARSEOP_ARG5); }
>  "Arg6"                      { count (1); return (PARSEOP_ARG6); }
> -
>  "Local0"                    { count (1); return (PARSEOP_LOCAL0); }
>  "Local1"                    { count (1); return (PARSEOP_LOCAL1); }
>  "Local2"                    { count (1); return (PARSEOP_LOCAL2); }
> @@ -307,16 +335,16 @@ NamePathTail                [.]{NameSeg}
>  "Local6"                    { count (1); return (PARSEOP_LOCAL6); }
>  "Local7"                    { count (1); return (PARSEOP_LOCAL7); }
>
> -"Debug"                     { count (1); return (PARSEOP_DEBUG); }
>
> -"DefinitionBlock"           { count (1); return (PARSEOP_DEFINITIONBLOCK); }
> -"Buffer"                    { count (1); return (PARSEOP_BUFFER); }
> -"Package"                   { count (1); return (PARSEOP_PACKAGE); }
> + /****************************************************************************
> +  *
> +  * Resource Descriptor macros
> +  *
> +  ****************************************************************************/
>
> -"EISAID"                    { count (1); return (PARSEOP_EISAID); }
>  "ResourceTemplate"          { count (1); return (PARSEOP_RESOURCETEMPLATE); }
> -"ToUUID"                    { count (1); return (PARSEOP_TOUUID); }
> -"Unicode"                   { count (1); return (PARSEOP_UNICODE); }
> +"RawDataBuffer"             { count (1); return (PARSEOP_DATABUFFER); }
> +
>  "DMA"                       { count (1); return (PARSEOP_DMA); }
>  "DWordIO"                   { count (1); return (PARSEOP_DWORDIO); }
>  "DWordMemory"               { count (1); return (PARSEOP_DWORDMEMORY); }
> @@ -325,70 +353,50 @@ NamePathTail                [.]{NameSeg}
>  "ExtendedIO"                { count (1); return (PARSEOP_EXTENDEDIO); }
>  "ExtendedMemory"            { count (1); return (PARSEOP_EXTENDEDMEMORY); }
>  "ExtendedSpace"             { count (1); return (PARSEOP_EXTENDEDSPACE); }
> +"FixedDma"                  { count (1); return (PARSEOP_FIXEDDMA); }
>  "FixedIO"                   { count (1); return (PARSEOP_FIXEDIO); }
> +"GpioInt"                   { count (1); return (PARSEOP_GPIO_INT); }
> +"GpioIo"                    { count (1); return (PARSEOP_GPIO_IO); }
> +"I2cSerialBus"              { count (1); return (PARSEOP_I2C_SERIALBUS); }
>  "Interrupt"                 { count (1); return (PARSEOP_INTERRUPT); }
>  "IO"                        { count (1); return (PARSEOP_IO); }
> -"IRQNoFlags"                { count (1); return (PARSEOP_IRQNOFLAGS); }
>  "IRQ"                       { count (1); return (PARSEOP_IRQ); }
> +"IRQNoFlags"                { count (1); return (PARSEOP_IRQNOFLAGS); }
>  "Memory24"                  { count (1); return (PARSEOP_MEMORY24); }
> -"Memory32Fixed"             { count (1); return (PARSEOP_MEMORY32FIXED); }
>  "Memory32"                  { count (1); return (PARSEOP_MEMORY32); }
> +"Memory32Fixed"             { count (1); return (PARSEOP_MEMORY32FIXED); }
>  "QWordIO"                   { count (1); return (PARSEOP_QWORDIO); }
>  "QWordMemory"               { count (1); return (PARSEOP_QWORDMEMORY); }
>  "QWordSpace"                { count (1); return (PARSEOP_QWORDSPACE); }
>  "Register"                  { count (1); return (PARSEOP_REGISTER); }
> +"SpiSerialBus"              { count (1); return (PARSEOP_SPI_SERIALBUS); }
>  "StartDependentFn"          { count (1); return (PARSEOP_STARTDEPENDENTFN); }
>  "StartDependentFnNoPri"     { count (1); return (PARSEOP_STARTDEPENDENTFN_NOPRI); }
> +"UartSerialBus"             { count (1); return (PARSEOP_UART_SERIALBUS); }
>  "VendorLong"                { count (1); return (PARSEOP_VENDORLONG); }
>  "VendorShort"               { count (1); return (PARSEOP_VENDORSHORT); }
>  "WordBusNumber"             { count (1); return (PARSEOP_WORDBUSNUMBER); }
>  "WordIO"                    { count (1); return (PARSEOP_WORDIO); }
>  "WordSpace"                 { count (1); return (PARSEOP_WORDSPACE); }
>
> -"UnknownObj"                { count (0); return (PARSEOP_OBJECTTYPE_UNK); }
> -"IntObj"                    { count (0); return (PARSEOP_OBJECTTYPE_INT); }
> -"StrObj"                    { count (0); return (PARSEOP_OBJECTTYPE_STR); }
> -"BuffObj"                   { count (0); return (PARSEOP_OBJECTTYPE_BUF); }
> -"PkgObj"                    { count (0); return (PARSEOP_OBJECTTYPE_PKG); }
> -"FieldUnitObj"              { count (0); return (PARSEOP_OBJECTTYPE_FLD); }
> -"DeviceObj"                 { count (0); return (PARSEOP_OBJECTTYPE_DEV); }
> -"EventObj"                  { count (0); return (PARSEOP_OBJECTTYPE_EVT); }
> -"MethodObj"                 { count (0); return (PARSEOP_OBJECTTYPE_MTH); }
> -"MutexObj"                  { count (0); return (PARSEOP_OBJECTTYPE_MTX); }
> -"OpRegionObj"               { count (0); return (PARSEOP_OBJECTTYPE_OPR); }
> -"PowerResObj"               { count (0); return (PARSEOP_OBJECTTYPE_POW); }
> -"ProcessorObj"              { count (0); return (PARSEOP_OBJECTTYPE_PRO); }
> -"ThermalZoneObj"            { count (0); return (PARSEOP_OBJECTTYPE_THZ); }
> -"BuffFieldObj"              { count (0); return (PARSEOP_OBJECTTYPE_BFF); }
> -"DDBHandleObj"              { count (0); return (PARSEOP_OBJECTTYPE_DDB); }
> -
> -"AnyAcc"                    { count (0); return (PARSEOP_ACCESSTYPE_ANY); }
> -"ByteAcc"                   { count (0); return (PARSEOP_ACCESSTYPE_BYTE); }
> -"WordAcc"                   { count (0); return (PARSEOP_ACCESSTYPE_WORD); }
> -"DWordAcc"                  { count (0); return (PARSEOP_ACCESSTYPE_DWORD); }
> -"QWordAcc"                  { count (0); return (PARSEOP_ACCESSTYPE_QWORD); }
> -"BufferAcc"                 { count (0); return (PARSEOP_ACCESSTYPE_BUF); }
> -
> -"Lock"                      { count (0); return (PARSEOP_LOCKRULE_LOCK); }
> -"NoLock"                    { count (0); return (PARSEOP_LOCKRULE_NOLOCK); }
>
> -"Preserve"                  { count (0); return (PARSEOP_UPDATERULE_PRESERVE); }
> -"WriteAsOnes"               { count (0); return (PARSEOP_UPDATERULE_ONES); }
> -"WriteAsZeros"              { count (0); return (PARSEOP_UPDATERULE_ZEROS); }
> + /****************************************************************************
> +  *
> +  * Keywords used as arguments to ASL operators and macros
> +  *
> +  ****************************************************************************/
>
> -"Serialized"                { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); }
> -"NotSerialized"             { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); }
> +    /*  AccessAttribKeyword: Serial Bus Attributes (ACPI 5.0) */
>
> -"SystemIO"                  { count (0); return (PARSEOP_REGIONSPACE_IO); }
> -"SystemMemory"              { count (0); return (PARSEOP_REGIONSPACE_MEM); }
> -"PCI_Config"                { count (0); return (PARSEOP_REGIONSPACE_PCI); }
> -"EmbeddedControl"           { count (0); return (PARSEOP_REGIONSPACE_EC); }
> -"SMBus"                     { count (0); return (PARSEOP_REGIONSPACE_SMBUS); }
> -"SystemCMOS"                { count (0); return (PARSEOP_REGIONSPACE_CMOS); }
> -"PciBarTarget"              { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); }
> -"IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
> +"AttribQuick"               { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); }
> +"AttribSendReceive"         { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); }
> +"AttribByte"                { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); }
> +"AttribWord"                { count (0); return (PARSEOP_ACCESSATTRIB_WORD); }
> +"AttribBlock"               { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); }
> +"AttribProcessCall"         { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); }
> +"AttribBlockProcessCall"    { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); }
>
> -"FFixedHW"                  { count (0); return (PARSEOP_ADDRESSSPACE_FFIXEDHW); }
> +    /* AccessAttribKeyword: Legacy synonyms for above (pre-ACPI 5.0) */
>
>  "SMBQuick"                  { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); }
>  "SMBSendReceive"            { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); }
> @@ -398,789 +406,319 @@ NamePathTail                [.]{NameSeg}
>  "SMBProcessCall"            { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); }
>  "SMBBlockProcessCall"       { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); }
>
> -"MTR"                       { count (0); return (PARSEOP_MATCHTYPE_MTR); }
> -"MEQ"                       { count (0); return (PARSEOP_MATCHTYPE_MEQ); }
> -"MLE"                       { count (0); return (PARSEOP_MATCHTYPE_MLE); }
> -"MLT"                       { count (0); return (PARSEOP_MATCHTYPE_MLT); }
> -"MGE"                       { count (0); return (PARSEOP_MATCHTYPE_MGE); }
> -"MGT"                       { count (0); return (PARSEOP_MATCHTYPE_MGT); }
> +    /* AccessTypeKeyword: Field Access Types */
>
> -"Compatibility"             { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); }
> -"TypeA"                     { count (0); return (PARSEOP_DMATYPE_A); }
> -"TypeB"                     { count (0); return (PARSEOP_DMATYPE_B); }
> -"TypeF"                     { count (0); return (PARSEOP_DMATYPE_F); }
> -
> -"BusMaster"                 { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); }
> -"NotBusMaster"              { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); }
> -
> -"Transfer8"                 { count (0); return (PARSEOP_XFERTYPE_8); }
> -"Transfer8_16"              { count (0); return (PARSEOP_XFERTYPE_8_16); }
> -"Transfer16"                { count (0); return (PARSEOP_XFERTYPE_16); }
> -
> -"ResourceConsumer"          { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); }
> -"ResourceProducer"          { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); }
> -
> -"MinFixed"                  { count (0); return (PARSEOP_MINTYPE_FIXED); }
> -"MinNotFixed"               { count (0); return (PARSEOP_MINTYPE_NOTFIXED); }
> -
> -"MaxFixed"                  { count (0); return (PARSEOP_MAXTYPE_FIXED); }
> -"MaxNotFixed"               { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); }
> -
> -"PosDecode"                 { count (0); return (PARSEOP_DECODETYPE_POS); }
> -"SubDecode"                 { count (0); return (PARSEOP_DECODETYPE_SUB); }
> -
> -"ISAOnlyRanges"             { count (0); return (PARSEOP_RANGETYPE_ISAONLY); }
> -"NonISAOnlyRanges"          { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); }
> -"EntireRange"               { count (0); return (PARSEOP_RANGETYPE_ENTIRE); }
> -
> -"Cacheable"                 { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); }
> -"WriteCombining"            { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); }
> -"Prefetchable"              { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); }
> -"NonCacheable"              { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); }
> -
> -"ReadWrite"                 { count (0); return (PARSEOP_READWRITETYPE_BOTH); }
> -"ReadOnly"                  { count (0); return (PARSEOP_READWRITETYPE_READONLY); }
> -
> -"Edge"                      { count (0); return (PARSEOP_INTTYPE_EDGE); }
> -"Level"                     { count (0); return (PARSEOP_INTTYPE_LEVEL); }
> -
> -"ActiveHigh"                { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); }
> -"ActiveLow"                 { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); }
> -
> -"Shared"                    { count (0); return (PARSEOP_SHARETYPE_SHARED); }
> -"Exclusive"                 { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); }
> +"AnyAcc"                    { count (0); return (PARSEOP_ACCESSTYPE_ANY); }
> +"ByteAcc"                   { count (0); return (PARSEOP_ACCESSTYPE_BYTE); }
> +"WordAcc"                   { count (0); return (PARSEOP_ACCESSTYPE_WORD); }
> +"DWordAcc"                  { count (0); return (PARSEOP_ACCESSTYPE_DWORD); }
> +"QWordAcc"                  { count (0); return (PARSEOP_ACCESSTYPE_QWORD); }
> +"BufferAcc"                 { count (0); return (PARSEOP_ACCESSTYPE_BUF); }
>
> -"Decode10"                  { count (0); return (PARSEOP_IODECODETYPE_10); }
> -"Decode16"                  { count (0); return (PARSEOP_IODECODETYPE_16); }
> +    /* AddressingModeKeyword: Mode - Resource Descriptors (ACPI 5.0) */
>
> -"TypeTranslation"           { count (0); return (PARSEOP_TYPE_TRANSLATION); }
> -"TypeStatic"                { count (0); return (PARSEOP_TYPE_STATIC); }
> +"AddressingMode7Bit"        { count (0); return (PARSEOP_ADDRESSINGMODE_7BIT); }
> +"AddressingMode10Bit"       { count (0); return (PARSEOP_ADDRESSINGMODE_10BIT); }
>
> -"SparseTranslation"         { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); }
> -"DenseTranslation"          { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); }
> +    /* AddressKeyword: ACPI memory range types */
>
>  "AddressRangeMemory"        { count (0); return (PARSEOP_ADDRESSTYPE_MEMORY); }
>  "AddressRangeReserved"      { count (0); return (PARSEOP_ADDRESSTYPE_RESERVED); }
>  "AddressRangeNVS"           { count (0); return (PARSEOP_ADDRESSTYPE_NVS); }
>  "AddressRangeACPI"          { count (0); return (PARSEOP_ADDRESSTYPE_ACPI); }
>
> -"__DATE__"                  { count (0); return (PARSEOP___DATE__); }
> -"__FILE__"                  { count (0); return (PARSEOP___FILE__); }
> -"__LINE__"                  { count (0); return (PARSEOP___LINE__); }
> -
> -"{"                         { count (0); return('{'); }
> -"}"                         { count (0); return('}'); }
> -","                         { count (0); return(','); }
> -"("                         { count (0); return('('); }
> -")"                         { count (0); return(')'); }
> -
> -
> -{NameSeg}                   { char *s;
> -                                count (0);
> -                                s=malloc (ACPI_NAME_SIZE + 1);
> -                                if (strcmp (AslCompilertext, "\\"))
> -                                {
> -                                    strcpy (s, "____");
> -                                    AcpiUtStrupr (AslCompilertext);
> -                                }
> -                                memcpy (s, AslCompilertext, strlen (AslCompilertext));
> -                                AslCompilerlval.s = s;
> -                                DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s);
> -                                return (PARSEOP_NAMESEG); }
> -
> -{NameString}                { char *s;
> -                                count (0);
> -                                s=malloc (strlen (AslCompilertext)+1);
> -                                AcpiUtStrupr (AslCompilertext);
> -                                strcpy (s, AslCompilertext);
> -                                s[strlen (AslCompilertext)] = 0;
> -                                AslCompilerlval.s = s;
> -                                DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s);
> -                                return (PARSEOP_NAMESTRING); }
> -
> -"*" |
> -"/"                         { count (1);
> -                                AslCompilererror ("Parse error, expecting ASL keyword or name");}
> -
> -.                           { count (1);
> -                                sprintf (MsgBuffer,
> -                                    "Invalid character (0x%2.2X), expecting ASL keyword or name",
> -                                    *AslCompilertext);
> -                                AslCompilererror (MsgBuffer);}
> -
> -<<EOF>>                     { if (AslPopInputFileStack ())
> -                                yyterminate();
> -                              else
> -                                return (PARSEOP_INCLUDE_END);};
> -
> -%%
> -
> -/*! [End] no source code translation !*/
> -
> -typedef struct asl_file_node
> -{
> -    FILE                    *File;
> -    UINT32                  CurrentLineNumber;
> -    YY_BUFFER_STATE         State;
> -    char                    *Filename;
> -    struct asl_file_node    *Next;
> -
> -} ASL_FILE_NODE;
> -
> -ASL_FILE_NODE               *InputStack = NULL;
> +    /* BusMasterKeyword: DMA Bus Mastering */
>
> +"BusMaster"                 { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); }
> +"NotBusMaster"              { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    AslPopInputFileStack
> - *
> - * PARAMETERS:  None
> - *
> - * RETURN:      0 if a node was popped, -1 otherwise
> - *
> - * DESCRIPTION: Pop the top of the input file stack and point the parser to
> - *              the saved parse buffer contained in the fnode.  Also, set the
> - *              global line counters to the saved values.  This function is
> - *              called when an include file reaches EOF.
> - *
> - ******************************************************************************/
> -
> -int
> -AslPopInputFileStack (
> -    void)
> -{
> -    ASL_FILE_NODE           *Fnode;
> -    FILE                    *InputFile = NULL;
> -
> -
> -    Fnode = InputStack;
> -    DbgPrint (ASL_PARSE_OUTPUT, "\nPop InputFile Stack, Fnode %p\n\n", Fnode);
> -
> -
> -    if (!Fnode)
> -    {
> -        return -1;
> -    }
> -
> -    /* Close the current include file */
> -
> -    fclose (yyin);
> +    /* ByteLengthKeyword: Bits per Byte - Resource Descriptors (ACPI 5.0) */
>
> -    /* Update the top-of-stack */
> +"DataBitsFive"              { count (0); return (PARSEOP_BITSPERBYTE_FIVE); }
> +"DataBitsSix"               { count (0); return (PARSEOP_BITSPERBYTE_SIX); }
> +"DataBitsSeven"             { count (0); return (PARSEOP_BITSPERBYTE_SEVEN); }
> +"DataBitsEight"             { count (0); return (PARSEOP_BITSPERBYTE_EIGHT); }
> +"DataBitsNine"              { count (0); return (PARSEOP_BITSPERBYTE_NINE); }
>
> -    InputStack = Fnode->Next;
> -    InputFile = Fnode->File;
> +    /* ClockPhaseKeyword: Resource Descriptors (ACPI 5.0) */
>
> -    /* Reset global line counter and filename */
> +"ClockPhaseFirst"           { count (0); return (PARSEOP_CLOCKPHASE_FIRST); }
> +"ClockPhaseSecond"          { count (0); return (PARSEOP_CLOCKPHASE_SECOND); }
>
> -    Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename;
> -    Gbl_CurrentLineNumber = Fnode->CurrentLineNumber;
> +    /* ClockPolarityKeyword: Resource Descriptors (ACPI 5.0) */
>
> -    /* Point the parser to the popped file */
> +"ClockPolarityLow"          { count (0); return (PARSEOP_CLOCKPOLARITY_LOW); }
> +"ClockPolarityHigh"         { count (0); return (PARSEOP_CLOCKPOLARITY_HIGH); }
>
> -    yy_delete_buffer (YY_CURRENT_BUFFER);
> -    yy_switch_to_buffer (Fnode->State);
> +    /* DecodeKeyword: Type of Memory Decoding - Resource Descriptors */
>
> -    /* All done with this node */
> +"PosDecode"                 { count (0); return (PARSEOP_DECODETYPE_POS); }
> +"SubDecode"                 { count (0); return (PARSEOP_DECODETYPE_SUB); }
>
> -    ACPI_FREE (Fnode);
> -    return 0;
> -}
> +    /* DmaTypeKeyword: DMA Types - DMA Resource Descriptor */
>
> +"Compatibility"             { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); }
> +"TypeA"                     { count (0); return (PARSEOP_DMATYPE_A); }
> +"TypeB"                     { count (0); return (PARSEOP_DMATYPE_B); }
> +"TypeF"                     { count (0); return (PARSEOP_DMATYPE_F); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    AslPushInputFileStack
> - *
> - * PARAMETERS:  InputFile           - Open file pointer
> - *              Filename            - Name of the file
> - *
> - * RETURN:      None
> - *
> - * DESCRIPTION: Push the InputFile onto the file stack, and point the parser
> - *              to this file.  Called when an include file is successfully
> - *              opened.
> - *
> - ******************************************************************************/
> +    /* EndianKeyword: Endian type - Resource Descriptor (ACPI 5.0) */
>
> -void
> -AslPushInputFileStack (
> -    FILE                    *InputFile,
> -    char                    *Filename)
> -{
> -    ASL_FILE_NODE           *Fnode;
> -    YY_BUFFER_STATE         State;
> +"LittleEndian"              { count (0); return (PARSEOP_ENDIAN_LITTLE); }
> +"BigEndian"                 { count (0); return (PARSEOP_ENDIAN_BIG); }
>
> +    /* ExtendedAttribKeyword: Bus attributes, AccessAs operator (ACPI 5.0) */
>
> -    /* Save the current state in an Fnode */
> +"AttribBytes"               { count (0); return (PARSEOP_ACCESSATTRIB_MULTIBYTE); }
> +"AttribRawBytes"            { count (0); return (PARSEOP_ACCESSATTRIB_RAW_BYTES); }
> +"AttribRawProcessBytes"     { count (0); return (PARSEOP_ACCESSATTRIB_RAW_PROCESS); }
>
> -    Fnode = UtLocalCalloc (sizeof (ASL_FILE_NODE));
> +    /* FlowControlKeyword: Resource Descriptors (ACPI 5.0) */
>
> -    Fnode->File                 = yyin;
> -    Fnode->Next                 = InputStack;
> -    Fnode->State                = YY_CURRENT_BUFFER;
> -    Fnode->CurrentLineNumber    = Gbl_CurrentLineNumber;
> -    Fnode->Filename             = Gbl_Files[ASL_FILE_INPUT].Filename;
> +"FlowControlHardware"       { count (0); return (PARSEOP_FLOWCONTROL_HW); }
> +"FlowControlNone"           { count (0); return (PARSEOP_FLOWCONTROL_NONE); }
> +"FlowControlXon"            { count (0); return (PARSEOP_FLOWCONTROL_SW); }
>
> -    /* Push it on the stack */
> +    /* InterruptLevelKeyword: Interrupt Active Types */
>
> -    InputStack = Fnode;
> +"ActiveBoth"                { count (0); return (PARSEOP_INTLEVEL_ACTIVEBOTH); }
> +"ActiveHigh"                { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); }
> +"ActiveLow"                 { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); }
>
> -    /* Point the parser to this file */
> +    /* InterruptTypeKeyword: Interrupt Types */
>
> -    State = yy_create_buffer (InputFile, YY_BUF_SIZE);
> -    yy_switch_to_buffer (State);
> +"Edge"                      { count (0); return (PARSEOP_INTTYPE_EDGE); }
> +"Level"                     { count (0); return (PARSEOP_INTTYPE_LEVEL); }
>
> -    DbgPrint (ASL_PARSE_OUTPUT, "\nPush InputFile Stack, returning %p\n\n", InputFile);
> +    /* IoDecodeKeyword: Type of Memory Decoding - Resource Descriptors */
>
> -    /* Reset the global line count and filename */
> +"Decode10"                  { count (0); return (PARSEOP_IODECODETYPE_10); }
> +"Decode16"                  { count (0); return (PARSEOP_IODECODETYPE_16); }
>
> -    Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
> -    Gbl_CurrentLineNumber = 1;
> -    yyin = InputFile;
> -}
> +    /* IoRestrictionKeyword: I/O Restriction - GPIO Resource Descriptors (ACPI 5.0) */
>
> +"IoRestrictionNone"         { count (0); return (PARSEOP_IORESTRICT_NONE); }
> +"IoRestrictionInputOnly"    { count (0); return (PARSEOP_IORESTRICT_IN); }
> +"IoRestrictionOutputOnly"   { count (0); return (PARSEOP_IORESTRICT_OUT); }
> +"IoRestrictionNoneAndPreserve"   { count (0); return (PARSEOP_IORESTRICT_PRESERVE); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    ResetCurrentLineBuffer
> - *
> - * PARAMETERS:  None
> - *
> - * RETURN:      None
> - *
> - * DESCRIPTION: Reset the Line Buffer to zero, increment global line numbers.
> - *
> - ******************************************************************************/
> +    /* LockRuleKeyword: Global Lock use for Field Operator */
>
> -void
> -ResetCurrentLineBuffer (
> -    void)
> -{
> +"Lock"                      { count (0); return (PARSEOP_LOCKRULE_LOCK); }
> +"NoLock"                    { count (0); return (PARSEOP_LOCKRULE_NOLOCK); }
>
> -    if (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle)
> -    {
> -        FlWriteFile (ASL_FILE_SOURCE_OUTPUT, Gbl_CurrentLineBuffer,
> -            Gbl_LineBufPtr - Gbl_CurrentLineBuffer);
> -    }
> +    /* MatchOpKeyword: Types for Match Operator */
>
> -    Gbl_CurrentLineOffset += Gbl_CurrentColumn;
> -    Gbl_CurrentColumn = 0;
> +"MTR"                       { count (0); return (PARSEOP_MATCHTYPE_MTR); }
> +"MEQ"                       { count (0); return (PARSEOP_MATCHTYPE_MEQ); }
> +"MLE"                       { count (0); return (PARSEOP_MATCHTYPE_MLE); }
> +"MLT"                       { count (0); return (PARSEOP_MATCHTYPE_MLT); }
> +"MGE"                       { count (0); return (PARSEOP_MATCHTYPE_MGE); }
> +"MGT"                       { count (0); return (PARSEOP_MATCHTYPE_MGT); }
>
> -    Gbl_CurrentLineNumber++;
> -    Gbl_LogicalLineNumber++;
> -    Gbl_LineBufPtr = Gbl_CurrentLineBuffer;
> -}
> +    /* MaxKeyword: Max Range Type - Resource Descriptors */
>
> +"MaxFixed"                  { count (0); return (PARSEOP_MAXTYPE_FIXED); }
> +"MaxNotFixed"               { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    InsertLineBuffer
> - *
> - * PARAMETERS:  SourceChar      - One char from the input ASL source file
> - *
> - * RETURN:      None
> - *
> - * DESCRIPTION: Put one character of the source file into the temp line buffer
> - *
> - ******************************************************************************/
> +    /* MemTypeKeyword: Memory Types - Resource Descriptors */
>
> -#define ASL_SPACES_PER_TAB  4
> +"Cacheable"                 { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); }
> +"WriteCombining"            { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); }
> +"Prefetchable"              { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); }
> +"NonCacheable"              { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); }
>
> -void
> -InsertLineBuffer (
> -    int                     SourceChar)
> -{
> -    UINT32                  i;
> -    UINT32                  Count = 1;
> +    /* MinKeyword: Min Range Type - Resource Descriptors */
>
> +"MinFixed"                  { count (0); return (PARSEOP_MINTYPE_FIXED); }
> +"MinNotFixed"               { count (0); return (PARSEOP_MINTYPE_NOTFIXED); }
>
> -    if (SourceChar == EOF)
> -    {
> -        return;
> -    }
> +    /* ObjectTypeKeyword: ACPI Object Types */
>
> -    Gbl_InputByteCount++;
> +"UnknownObj"                { count (0); return (PARSEOP_OBJECTTYPE_UNK); }
> +"IntObj"                    { count (0); return (PARSEOP_OBJECTTYPE_INT); }
> +"StrObj"                    { count (0); return (PARSEOP_OBJECTTYPE_STR); }
> +"BuffObj"                   { count (0); return (PARSEOP_OBJECTTYPE_BUF); }
> +"PkgObj"                    { count (0); return (PARSEOP_OBJECTTYPE_PKG); }
> +"FieldUnitObj"              { count (0); return (PARSEOP_OBJECTTYPE_FLD); }
> +"DeviceObj"                 { count (0); return (PARSEOP_OBJECTTYPE_DEV); }
> +"EventObj"                  { count (0); return (PARSEOP_OBJECTTYPE_EVT); }
> +"MethodObj"                 { count (0); return (PARSEOP_OBJECTTYPE_MTH); }
> +"MutexObj"                  { count (0); return (PARSEOP_OBJECTTYPE_MTX); }
> +"OpRegionObj"               { count (0); return (PARSEOP_OBJECTTYPE_OPR); }
> +"PowerResObj"               { count (0); return (PARSEOP_OBJECTTYPE_POW); }
> +"ProcessorObj"              { count (0); return (PARSEOP_OBJECTTYPE_PRO); }
> +"ThermalZoneObj"            { count (0); return (PARSEOP_OBJECTTYPE_THZ); }
> +"BuffFieldObj"              { count (0); return (PARSEOP_OBJECTTYPE_BFF); }
> +"DDBHandleObj"              { count (0); return (PARSEOP_OBJECTTYPE_DDB); }
>
> -    /* Handle tabs.  Convert to spaces */
> +    /* ParityKeyword: Resource Descriptors (ACPI 5.0) */
>
> -    if (SourceChar == '\t')
> -    {
> -        SourceChar = ' ';
> -        Count = ASL_SPACES_PER_TAB -
> -                    (Gbl_CurrentColumn & (ASL_SPACES_PER_TAB-1));
> -    }
> +"ParityTypeSpace"           { count (0); return (PARSEOP_PARITYTYPE_SPACE); }
> +"ParityTypeMark"            { count (0); return (PARSEOP_PARITYTYPE_MARK); }
> +"ParityTypeOdd"             { count (0); return (PARSEOP_PARITYTYPE_ODD); }
> +"ParityTypeEven"            { count (0); return (PARSEOP_PARITYTYPE_EVEN); }
> +"ParityTypeNone"            { count (0); return (PARSEOP_PARITYTYPE_NONE); }
>
> +    /* PinConfigKeyword: Pin Configuration - GPIO Resource Descriptors (ACPI 5.0) */
>
> -    for (i = 0; i < Count; i++)
> -    {
> -        Gbl_CurrentColumn++;
> +"PullDefault"               { count (0); return (PARSEOP_PIN_PULLDEFAULT); }
> +"PullUp"                    { count (0); return (PARSEOP_PIN_PULLUP); }
> +"PullDown"                  { count (0); return (PARSEOP_PIN_PULLDOWN); }
> +"PullNone"                  { count (0); return (PARSEOP_PIN_NOPULL); }
>
> -        /* Insert the character into the line buffer */
> +    /* PolarityKeyword: Resource Descriptors (ACPI 5.0) */
>
> -        *Gbl_LineBufPtr = (UINT8) SourceChar;
> -        Gbl_LineBufPtr++;
> +"PolarityLow"               { count (0); return (PARSEOP_DEVICEPOLARITY_LOW); }
> +"PolarityHigh"              { count (0); return (PARSEOP_DEVICEPOLARITY_HIGH); }
>
> -        if (Gbl_LineBufPtr > (Gbl_CurrentLineBuffer + (ASL_LINE_BUFFER_SIZE - 1)))
> -        {
> -#if 0
> -            /*
> -             * Warning if we have split a long source line.
> -             * <Probably overkill>
> -             */
> -            sprintf (MsgBuffer, "Max %u", ASL_LINE_BUFFER_SIZE);
> -            AslCommonError (ASL_WARNING, ASL_MSG_LONG_LINE,
> -                            Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                            Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                            Gbl_Files[ASL_FILE_INPUT].Filename, MsgBuffer);
> -#endif
> +    /* RangeTypeKeyword: I/O Range Types - Resource Descriptors */
>
> -            ResetCurrentLineBuffer ();
> -        }
> -        else if (SourceChar == '\n')
> -        {
> -            /* End of line */
> +"ISAOnlyRanges"             { count (0); return (PARSEOP_RANGETYPE_ISAONLY); }
> +"NonISAOnlyRanges"          { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); }
> +"EntireRange"               { count (0); return (PARSEOP_RANGETYPE_ENTIRE); }
>
> -            ResetCurrentLineBuffer ();
> -        }
> -    }
> -}
> +    /* ReadWriteKeyword: Memory Access Types - Resource Descriptors */
>
> +"ReadWrite"                 { count (0); return (PARSEOP_READWRITETYPE_BOTH); }
> +"ReadOnly"                  { count (0); return (PARSEOP_READWRITETYPE_READONLY); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    count
> - *
> - * PARAMETERS:  yytext      - Contains the matched keyword.
> - *              Type        - Keyword/Character type:
> - *                             0 = anything except a keyword
> - *                             1 = pseudo-keywords
> - *                             2 = non-executable ASL keywords
> - *                             3 = executable ASL keywords
> - *
> - * RETURN:      None
> - *
> - * DESCRIPTION: Count keywords and put them into the line buffer
> - *
> - ******************************************************************************/
> +    /* RegionSpaceKeyword: Operation Region Address Space Types */
>
> -void
> -count (
> -    int                 Type)
> -{
> -    int                 i;
> +"SystemIO"                  { count (0); return (PARSEOP_REGIONSPACE_IO); }
> +"SystemMemory"              { count (0); return (PARSEOP_REGIONSPACE_MEM); }
> +"PCI_Config"                { count (0); return (PARSEOP_REGIONSPACE_PCI); }
> +"EmbeddedControl"           { count (0); return (PARSEOP_REGIONSPACE_EC); }
> +"SMBus"                     { count (0); return (PARSEOP_REGIONSPACE_SMBUS); }
> +"SystemCMOS"                { count (0); return (PARSEOP_REGIONSPACE_CMOS); }
> +"PciBarTarget"              { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); }
> +"IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
> +"GeneralPurposeIo"          { count (0); return (PARSEOP_REGIONSPACE_GPIO); }       /* ACPI 5.0 */
> +"GenericSerialBus"          { count (0); return (PARSEOP_REGIONSPACE_GSBUS); }      /* ACPI 5.0 */
> +"FFixedHW"                  { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
>
> +    /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
>
> -    switch (Type)
> -    {
> -    case 2:
> -        TotalKeywords++;
> -        TotalNamedObjects++;
> -        break;
> +"ResourceConsumer"          { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); }
> +"ResourceProducer"          { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); }
>
> -    case 3:
> -        TotalKeywords++;
> -        TotalExecutableOpcodes++;
> -        break;
> -    }
> +    /* SerializeRuleKeyword: Control Method Serialization */
>
> -    for (i = 0; (yytext[i] != 0) && (yytext[i] != EOF); i++)
> -    {
> -        InsertLineBuffer (yytext[i]);
> -        *Gbl_LineBufPtr = 0;
> -    }
> -}
> +"Serialized"                { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); }
> +"NotSerialized"             { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); }
>
> +    /* ShareTypeKeyword: Interrupt Sharing - Resource Descriptors */
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    comment
> - *
> - * PARAMETERS:  none
> - *
> - * RETURN:      none
> - *
> - * DESCRIPTION: Process a standard comment.
> - *
> - ******************************************************************************/
> +"Shared"                    { count (0); return (PARSEOP_SHARETYPE_SHARED); }
> +"Exclusive"                 { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); }
> +"SharedAndWake"             { count (0); return (PARSEOP_SHARETYPE_SHAREDWAKE); }       /* ACPI 5.0 */
> +"ExclusiveAndWake"          { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVEWAKE); }    /* ACPI 5.0 */
>
> -char
> -comment (void)
> -{
> -    char                c;
> -    char                c1 = 0;
> +    /* SlaveModeKeyword: Resource Descriptors (ACPI 5.0) */
>
> +"ControllerInitiated"       { count (0); return (PARSEOP_SLAVEMODE_CONTROLLERINIT); }
> +"DeviceInitiated"           { count (0); return (PARSEOP_SLAVEMODE_DEVICEINIT); }
>
> -    InsertLineBuffer ('/');
> -    InsertLineBuffer ('*');
> +    /* StopBitsKeyword: Resource Descriptors (ACPI 5.0) */
>
> -loop:
> +"StopBitsOne"               { count (0); return (PARSEOP_STOPBITS_ONE); }
> +"StopBitsOnePlusHalf"       { count (0); return (PARSEOP_STOPBITS_ONEPLUSHALF); }
> +"StopBitsTwo"               { count (0); return (PARSEOP_STOPBITS_TWO); }
> +"StopBitsZero"              { count (0); return (PARSEOP_STOPBITS_ZERO); }
>
> -    /* Eat chars until end-of-comment */
> +    /* TransferWidthKeyword: DMA Widths - Fixed DMA Resource Descriptor (ACPI 5.0) */
>
> -    while ((c = (char) input()) != '*' && c != EOF)
> -    {
> -        InsertLineBuffer (c);
> -        c1 = c;
> -    }
> +"Width8bit"                 { count (0); return (PARSEOP_XFERSIZE_8); }
> +"Width16bit"                { count (0); return (PARSEOP_XFERSIZE_16); }
> +"Width32bit"                { count (0); return (PARSEOP_XFERSIZE_32); }
> +"Width64bit"                { count (0); return (PARSEOP_XFERSIZE_64); }
> +"Width128bit"               { count (0); return (PARSEOP_XFERSIZE_128); }
> +"Width256bit"               { count (0); return (PARSEOP_XFERSIZE_256); }
>
> -    if (c == EOF)
> -    {
> -        goto EarlyEOF;
> -    }
> +    /* TranslationKeyword: Translation Density Types - Resource Descriptors */
>
> -    /*
> -     * Check for nested comment -- can help catch cases where a previous
> -     * comment was accidently left unterminated
> -     */
> -    if ((c1 == '/') && (c == '*'))
> -    {
> -        AslCommonError (ASL_WARNING, ASL_MSG_NESTED_COMMENT,
> -                        Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                        Gbl_InputByteCount, Gbl_CurrentColumn,
> -                        Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -    }
> +"SparseTranslation"         { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); }
> +"DenseTranslation"          { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); }
>
> -    /* Comment is closed only if the NEXT character is a slash */
> +    /* TypeKeyword: Translation Types - Resource Descriptors */
>
> -    InsertLineBuffer (c);
> +"TypeTranslation"           { count (0); return (PARSEOP_TYPE_TRANSLATION); }
> +"TypeStatic"                { count (0); return (PARSEOP_TYPE_STATIC); }
>
> -    if ((c1 = (char) input()) != '/' && c1 != EOF)
> -    {
> -        unput(c1);
> -        goto loop;
> -    }
> +    /* UpdateRuleKeyword: Field Update Rules */
>
> -    if (c1 == EOF)
> -    {
> -        goto EarlyEOF;
> -    }
> +"Preserve"                  { count (0); return (PARSEOP_UPDATERULE_PRESERVE); }
> +"WriteAsOnes"               { count (0); return (PARSEOP_UPDATERULE_ONES); }
> +"WriteAsZeros"              { count (0); return (PARSEOP_UPDATERULE_ZEROS); }
>
> -    InsertLineBuffer (c1);
> -    return TRUE;
> +    /* WireModeKeyword: SPI Wire Mode - Resource Descriptors (ACPI 5.0) */
>
> +"FourWireMode"              { count (0); return (PARSEOP_WIREMODE_FOUR); }
> +"ThreeWireMode"             { count (0); return (PARSEOP_WIREMODE_THREE); }
>
> -EarlyEOF:
> -    /*
> -     * Premature End-Of-File
> -     */
> -    AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF,
> -                    Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                    Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                    Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -    return (FALSE);
> -}
> +    /* XferTypeKeyword: DMA Transfer Types */
>
> +"Transfer8"                 { count (0); return (PARSEOP_XFERTYPE_8); }
> +"Transfer8_16"              { count (0); return (PARSEOP_XFERTYPE_8_16); }
> +"Transfer16"                { count (0); return (PARSEOP_XFERTYPE_16); }
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    comment
> - *
> - * PARAMETERS:  none
> - *
> - * RETURN:      none
> - *
> - * DESCRIPTION: Process a new "//" comment.
> - *
> - ******************************************************************************/
> +    /* Predefined compiler names */
>
> -char
> -comment2 (void)
> -{
> -    char                c;
> +"__DATE__"                  { count (0); return (PARSEOP___DATE__); }
> +"__FILE__"                  { count (0); return (PARSEOP___FILE__); }
> +"__LINE__"                  { count (0); return (PARSEOP___LINE__); }
> +"__PATH__"                  { count (0); return (PARSEOP___PATH__); }
>
>
> -    InsertLineBuffer ('/');
> -    InsertLineBuffer ('/');
> +"{"                         { count (0); return('{'); }
> +"}"                         { count (0); return('}'); }
> +","                         { count (0); return(','); }
> +"("                         { count (0); return('('); }
> +")"                         { count (0); return(')'); }
>
> -    while ((c = (char) input()) != '\n' && c != EOF)
> -    {
> -        InsertLineBuffer (c);
> -    }
> +{NameSeg}                   { char *s;
> +                                count (0);
> +                                s=malloc (ACPI_NAME_SIZE + 1);
> +                                if (strcmp (AslCompilertext, "\\"))
> +                                {
> +                                    strcpy (s, "____");
> +                                    AcpiUtStrupr (AslCompilertext);
> +                                }
> +                                memcpy (s, AslCompilertext, strlen (AslCompilertext));
> +                                AslCompilerlval.s = s;
> +                                DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s);
> +                                return (PARSEOP_NAMESEG); }
>
> -    if (c == EOF)
> -    {
> -        /* End of file is OK, change to newline. Let parser detect EOF later */
> +{NameString}                { char *s;
> +                                count (0);
> +                                s=malloc (strlen (AslCompilertext)+1);
> +                                AcpiUtStrupr (AslCompilertext);
> +                                strcpy (s, AslCompilertext);
> +                                s[strlen (AslCompilertext)] = 0;
> +                                AslCompilerlval.s = s;
> +                                DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s);
> +                                return (PARSEOP_NAMESTRING); }
>
> -        c = '\n';
> -    }
> +"*" |
> +"/"                         { count (1);
> +                                AslCompilererror ("Parse error, expecting ASL keyword or name");}
>
> -    InsertLineBuffer (c);
> -    return (TRUE);
> -}
> +.                           { count (1);
> +                                sprintf (MsgBuffer,
> +                                    "Invalid character (0x%2.2X), expecting ASL keyword or name",
> +                                    *AslCompilertext);
> +                                AslCompilererror (MsgBuffer);}
>
> +<<EOF>>                     { if (AslPopInputFileStack ())
> +                                yyterminate();
> +                              else
> +                                return (PARSEOP_INCLUDE_END);};
>
> -/*******************************************************************************
> - *
> - * FUNCTION:    literal
> - *
> - * PARAMETERS:  none
> - *
> - * RETURN:      none
> - *
> - * DESCRIPTION: Process a string literal (surrounded by quotes)
> - *
> - ******************************************************************************/
> -
> -#define ASL_NORMAL_CHAR         0
> -#define ASL_ESCAPE_SEQUENCE     1
> -#define ASL_OCTAL_CONSTANT      2
> -#define ASL_HEX_CONSTANT        3
> -
> -char
> -literal (void)
> -{
> -    char                *StringBuffer = MsgBuffer;
> -    char                *EndBuffer = MsgBuffer + ASL_MSG_BUFFER_SIZE;
> -    char                *CleanString;
> -    char                StringChar;
> -    UINT32              State = ASL_NORMAL_CHAR;
> -    UINT32              i = 0;
> -    UINT8               Digit;
> -    char                ConvertBuffer[4];
> -
> -
> -    /*
> -     * Eat chars until end-of-literal.
> -     * NOTE:  Put back the original surrounding quotes into the
> -     * source line buffer.
> -     */
> -    InsertLineBuffer ('\"');
> -    while ((StringChar = (char) input()) != EOF)
> -    {
> -        InsertLineBuffer (StringChar);
> -
> -DoCharacter:
> -
> -        switch (State)
> -        {
> -        case ASL_NORMAL_CHAR:
> -
> -            switch (StringChar)
> -            {
> -            case '\\':
> -                /*
> -                 * Special handling for backslash-escape sequence.  We will
> -                 * toss the backslash and translate the escape char(s).
> -                 */
> -                State = ASL_ESCAPE_SEQUENCE;
> -                continue;
> -
> -            case '\"':
> -
> -                /* String terminator */
> -
> -                goto CompletedString;
> -            }
> -            break;
> -
> -
> -        case ASL_ESCAPE_SEQUENCE:
> -
> -            State = ASL_NORMAL_CHAR;
> -            switch (StringChar)
> -            {
> -            case 'a':
> -                StringChar = 0x07;      /* BELL */
> -                break;
> -
> -            case 'b':
> -                StringChar = 0x08;      /* BACKSPACE */
> -                break;
> -
> -            case 'f':
> -                StringChar = 0x0C;      /* FORMFEED */
> -                break;
> -
> -            case 'n':
> -                StringChar = 0x0A;      /* LINEFEED */
> -                break;
> -
> -            case 'r':
> -                StringChar = 0x0D;      /* CARRIAGE RETURN*/
> -                break;
> -
> -            case 't':
> -                StringChar = 0x09;      /* HORIZONTAL TAB */
> -                break;
> -
> -            case 'v':
> -                StringChar = 0x0B;      /* VERTICAL TAB */
> -                break;
> -
> -            case 'x':
> -                State = ASL_HEX_CONSTANT;
> -                i = 0;
> -                continue;
> -
> -            case '\'':                  /* Single Quote */
> -            case '\"':                  /* Double Quote */
> -            case '\\':                  /* Backslash */
> -                break;
> -
> -            default:
> -
> -                /* Check for an octal digit (0-7) */
> -
> -                if (ACPI_IS_OCTAL_DIGIT (StringChar))
> -                {
> -                    State = ASL_OCTAL_CONSTANT;
> -                    ConvertBuffer[0] = StringChar;
> -                    i = 1;
> -                    continue;
> -                }
> -
> -                /* Unknown escape sequence issue warning, but use the character */
> -
> -                AslCommonError (ASL_WARNING, ASL_MSG_INVALID_ESCAPE,
> -                                Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                                Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                                Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -                               break;
> -            }
> -            break;
> -
> -
> -        case ASL_OCTAL_CONSTANT:
> -
> -            /* Up to three octal digits allowed */
> -
> -            if (!ACPI_IS_OCTAL_DIGIT (StringChar) ||
> -                (i > 2))
> -            {
> -                /*
> -                 * Reached end of the constant.  Convert the assembled ASCII
> -                 * string and resume processing of the next character
> -                 */
> -                ConvertBuffer[i] = 0;
> -                Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 8);
> -
> -                /* Check for NULL or non-ascii character (ignore if so) */
> -
> -                if ((Digit == 0) || (Digit > ACPI_ASCII_MAX))
> -                {
> -                    AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING,
> -                                    Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                                    Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                                    Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -                }
> -                else
> -                {
> -                    *StringBuffer = (char) Digit;
> -                    StringBuffer++;
> -                    if (StringBuffer >= EndBuffer)
> -                    {
> -                        goto BufferOverflow;
> -                    }
> -                }
> -
> -                State = ASL_NORMAL_CHAR;
> -                goto DoCharacter;
> -                break;
> -            }
> -
> -            /* Append another digit of the constant */
> -
> -            ConvertBuffer[i] = StringChar;
> -            i++;
> -            continue;
> -
> -
> -        case ASL_HEX_CONSTANT:
> -
> -            /* Up to two hex digits allowed */
> -
> -            if (!ACPI_IS_XDIGIT (StringChar) ||
> -                (i > 1))
> -            {
> -                /*
> -                 * Reached end of the constant.  Convert the assembled ASCII
> -                 * string and resume processing of the next character
> -                 */
> -                ConvertBuffer[i] = 0;
> -                Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 16);
> -
> -                /* Check for NULL or non-ascii character (ignore if so) */
> -
> -                if ((Digit == 0) || (Digit > ACPI_ASCII_MAX))
> -                {
> -                    AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING,
> -                                    Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                                    Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                                    Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -                }
> -                else
> -                {
> -                    *StringBuffer = (char) Digit;
> -                    StringBuffer++;
> -                    if (StringBuffer >= EndBuffer)
> -                    {
> -                        goto BufferOverflow;
> -                    }
> -                }
> -
> -                State = ASL_NORMAL_CHAR;
> -                goto DoCharacter;
> -                break;
> -            }
> -
> -            /* Append another digit of the constant */
> -
> -            ConvertBuffer[i] = StringChar;
> -            i++;
> -            continue;
> -        }
> -
> -        /* Save the finished character */
> -
> -        *StringBuffer = StringChar;
> -        StringBuffer++;
> -        if (StringBuffer >= EndBuffer)
> -        {
> -            goto BufferOverflow;
> -        }
> -    }
> -
> -    /*
> -     * Premature End-Of-File
> -     */
> -    AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF,
> -                    Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                    Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                    Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -    return (FALSE);
> -
> -
> -CompletedString:
> -    /*
> -     * Null terminate the input string and copy string to a new buffer
> -     */
> -    *StringBuffer = 0;
> -
> -    CleanString = UtGetStringBuffer (strlen (MsgBuffer) + 1);
> -    if (!CleanString)
> -    {
> -        AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION,
> -                        Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                        Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                        Gbl_Files[ASL_FILE_INPUT].Filename, NULL);
> -        return (FALSE);
> -    }
> -
> -    ACPI_STRCPY (CleanString, MsgBuffer);
> -    AslCompilerlval.s = CleanString;
> -    return (TRUE);
> -
> -
> -BufferOverflow:
> -
> -    /* Literal was too long */
> -
> -    AslCommonError (ASL_ERROR, ASL_MSG_STRING_LENGTH,
> -                    Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,
> -                    Gbl_CurrentLineOffset, Gbl_CurrentColumn,
> -                    Gbl_Files[ASL_FILE_INPUT].Filename, "Max length 4096");
> -    return (FALSE);
> -}
> +%%
>
> +/*! [End] no source code translation !*/
>
> +/*
> + * Bring in the scanner support routines
> + */
> +#include "aslsupport.l"
> diff --git a/src/acpica/source/compiler/aslcompiler.y b/src/acpica/source/compiler/aslcompiler.y
> index 6156b52..9aa8b51 100644
> --- a/src/acpica/source/compiler/aslcompiler.y
> +++ b/src/acpica/source/compiler/aslcompiler.y
> @@ -1,8 +1,7 @@
> -
>  %{
>  /******************************************************************************
>  *
> - * Module Name: aslcompiler.y - Bison input file (ASL grammar and actions)
> + * Module Name: aslcompiler.y - Bison/Yacc input file (ASL grammar and actions)
>  *
>  *****************************************************************************/
>
> @@ -10,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -151,6 +150,11 @@ void *                      AslLocalAllocate (unsigned int Size);
>  #define YYDEBUG             1               /* Enable debug output */
>  #define YYERROR_VERBOSE     1               /* Verbose error messages */
>
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors  */
> +
> +#define YYMALLOC            malloc
> +#define YYFREE              free
> +
>  /*
>  * The windows version of bison defines this incorrectly as "32768" (Not negative).
>  * We use a custom (edited binary) version of bison that defines YYFLAG as YYFBAD
> @@ -178,22 +182,28 @@ void *                      AslLocalAllocate (unsigned int Size);
>  * These shift/reduce conflicts are expected. There should be zero
>  * reduce/reduce conflicts.
>  */
> -%expect 60
> +%expect 86
>
> -/*
> +/******************************************************************************
> + *
>  * Token types: These are returned by the lexer
>  *
>  * NOTE: This list MUST match the AslKeywordMapping table found
>  *       in aslmap.c EXACTLY!  Double check any changes!
> - */
> + *
> + *****************************************************************************/
> +
>  %token <i> PARSEOP_ACCESSAS
>  %token <i> PARSEOP_ACCESSATTRIB_BLOCK
>  %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
>  %token <i> PARSEOP_ACCESSATTRIB_BYTE
> -%token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
> +%token <i> PARSEOP_ACCESSATTRIB_MULTIBYTE
>  %token <i> PARSEOP_ACCESSATTRIB_QUICK
> +%token <i> PARSEOP_ACCESSATTRIB_RAW_BYTES
> +%token <i> PARSEOP_ACCESSATTRIB_RAW_PROCESS
>  %token <i> PARSEOP_ACCESSATTRIB_SND_RCV
>  %token <i> PARSEOP_ACCESSATTRIB_WORD
> +%token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
>  %token <i> PARSEOP_ACCESSTYPE_ANY
>  %token <i> PARSEOP_ACCESSTYPE_BUF
>  %token <i> PARSEOP_ACCESSTYPE_BYTE
> @@ -202,7 +212,8 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_ACCESSTYPE_WORD
>  %token <i> PARSEOP_ACQUIRE
>  %token <i> PARSEOP_ADD
> -%token <i> PARSEOP_ADDRESSSPACE_FFIXEDHW
> +%token <i> PARSEOP_ADDRESSINGMODE_7BIT
> +%token <i> PARSEOP_ADDRESSINGMODE_10BIT
>  %token <i> PARSEOP_ADDRESSTYPE_ACPI
>  %token <i> PARSEOP_ADDRESSTYPE_MEMORY
>  %token <i> PARSEOP_ADDRESSTYPE_NVS
> @@ -217,6 +228,11 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_ARG5
>  %token <i> PARSEOP_ARG6
>  %token <i> PARSEOP_BANKFIELD
> +%token <i> PARSEOP_BITSPERBYTE_EIGHT
> +%token <i> PARSEOP_BITSPERBYTE_FIVE
> +%token <i> PARSEOP_BITSPERBYTE_NINE
> +%token <i> PARSEOP_BITSPERBYTE_SEVEN
> +%token <i> PARSEOP_BITSPERBYTE_SIX
>  %token <i> PARSEOP_BREAK
>  %token <i> PARSEOP_BREAKPOINT
>  %token <i> PARSEOP_BUFFER
> @@ -224,9 +240,14 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_BUSMASTERTYPE_NOTMASTER
>  %token <i> PARSEOP_BYTECONST
>  %token <i> PARSEOP_CASE
> +%token <i> PARSEOP_CLOCKPHASE_FIRST
> +%token <i> PARSEOP_CLOCKPHASE_SECOND
> +%token <i> PARSEOP_CLOCKPOLARITY_HIGH
> +%token <i> PARSEOP_CLOCKPOLARITY_LOW
>  %token <i> PARSEOP_CONCATENATE
>  %token <i> PARSEOP_CONCATENATERESTEMPLATE
>  %token <i> PARSEOP_CONDREFOF
> +%token <i> PARSEOP_CONNECTION
>  %token <i> PARSEOP_CONTINUE
>  %token <i> PARSEOP_COPYOBJECT
>  %token <i> PARSEOP_CREATEBITFIELD
> @@ -235,6 +256,7 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_CREATEFIELD
>  %token <i> PARSEOP_CREATEQWORDFIELD
>  %token <i> PARSEOP_CREATEWORDFIELD
> +%token <i> PARSEOP_DATABUFFER
>  %token <i> PARSEOP_DATATABLEREGION
>  %token <i> PARSEOP_DEBUG
>  %token <i> PARSEOP_DECODETYPE_POS
> @@ -245,6 +267,8 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_DEFINITIONBLOCK
>  %token <i> PARSEOP_DEREFOF
>  %token <i> PARSEOP_DEVICE
> +%token <i> PARSEOP_DEVICEPOLARITY_HIGH
> +%token <i> PARSEOP_DEVICEPOLARITY_LOW
>  %token <i> PARSEOP_DIVIDE
>  %token <i> PARSEOP_DMA
>  %token <i> PARSEOP_DMATYPE_A
> @@ -259,6 +283,8 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_ELSE
>  %token <i> PARSEOP_ELSEIF
>  %token <i> PARSEOP_ENDDEPENDENTFN
> +%token <i> PARSEOP_ENDIAN_BIG
> +%token <i> PARSEOP_ENDIAN_LITTLE
>  %token <i> PARSEOP_ENDTAG
>  %token <i> PARSEOP_ERRORNODE
>  %token <i> PARSEOP_EVENT
> @@ -270,18 +296,25 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_FIELD
>  %token <i> PARSEOP_FINDSETLEFTBIT
>  %token <i> PARSEOP_FINDSETRIGHTBIT
> +%token <i> PARSEOP_FIXEDDMA
>  %token <i> PARSEOP_FIXEDIO
> +%token <i> PARSEOP_FLOWCONTROL_HW
> +%token <i> PARSEOP_FLOWCONTROL_NONE
> +%token <i> PARSEOP_FLOWCONTROL_SW
>  %token <i> PARSEOP_FROMBCD
>  %token <i> PARSEOP_FUNCTION
> +%token <i> PARSEOP_GPIO_INT
> +%token <i> PARSEOP_GPIO_IO
> +%token <i> PARSEOP_I2C_SERIALBUS
>  %token <i> PARSEOP_IF
>  %token <i> PARSEOP_INCLUDE
> -%token <i> PARSEOP_INCLUDE_CSTYLE
>  %token <i> PARSEOP_INCLUDE_END
>  %token <i> PARSEOP_INCREMENT
>  %token <i> PARSEOP_INDEX
>  %token <i> PARSEOP_INDEXFIELD
>  %token <i> PARSEOP_INTEGER
>  %token <i> PARSEOP_INTERRUPT
> +%token <i> PARSEOP_INTLEVEL_ACTIVEBOTH
>  %token <i> PARSEOP_INTLEVEL_ACTIVEHIGH
>  %token <i> PARSEOP_INTLEVEL_ACTIVELOW
>  %token <i> PARSEOP_INTTYPE_EDGE
> @@ -289,13 +322,16 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_IO
>  %token <i> PARSEOP_IODECODETYPE_10
>  %token <i> PARSEOP_IODECODETYPE_16
> +%token <i> PARSEOP_IORESTRICT_IN
> +%token <i> PARSEOP_IORESTRICT_NONE
> +%token <i> PARSEOP_IORESTRICT_OUT
> +%token <i> PARSEOP_IORESTRICT_PRESERVE
>  %token <i> PARSEOP_IRQ
>  %token <i> PARSEOP_IRQNOFLAGS
>  %token <i> PARSEOP_LAND
>  %token <i> PARSEOP_LEQUAL
>  %token <i> PARSEOP_LGREATER
>  %token <i> PARSEOP_LGREATEREQUAL
> -%token <i> PARSEOP_LINE_CSTYLE
>  %token <i> PARSEOP_LLESS
>  %token <i> PARSEOP_LLESSEQUAL
>  %token <i> PARSEOP_LNOT
> @@ -369,6 +405,15 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_OR
>  %token <i> PARSEOP_PACKAGE
>  %token <i> PARSEOP_PACKAGE_LENGTH
> +%token <i> PARSEOP_PARITYTYPE_EVEN
> +%token <i> PARSEOP_PARITYTYPE_MARK
> +%token <i> PARSEOP_PARITYTYPE_NONE
> +%token <i> PARSEOP_PARITYTYPE_ODD
> +%token <i> PARSEOP_PARITYTYPE_SPACE
> +%token <i> PARSEOP_PIN_NOPULL
> +%token <i> PARSEOP_PIN_PULLDEFAULT
> +%token <i> PARSEOP_PIN_PULLDOWN
> +%token <i> PARSEOP_PIN_PULLUP
>  %token <i> PARSEOP_POWERRESOURCE
>  %token <i> PARSEOP_PROCESSOR
>  %token <i> PARSEOP_QWORDCONST
> @@ -384,6 +429,9 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_REFOF
>  %token <i> PARSEOP_REGIONSPACE_CMOS
>  %token <i> PARSEOP_REGIONSPACE_EC
> +%token <i> PARSEOP_REGIONSPACE_FFIXEDHW
> +%token <i> PARSEOP_REGIONSPACE_GPIO
> +%token <i> PARSEOP_REGIONSPACE_GSBUS
>  %token <i> PARSEOP_REGIONSPACE_IO
>  %token <i> PARSEOP_REGIONSPACE_IPMI
>  %token <i> PARSEOP_REGIONSPACE_MEM
> @@ -403,15 +451,24 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_SERIALIZERULE_NOTSERIAL
>  %token <i> PARSEOP_SERIALIZERULE_SERIAL
>  %token <i> PARSEOP_SHARETYPE_EXCLUSIVE
> +%token <i> PARSEOP_SHARETYPE_EXCLUSIVEWAKE
>  %token <i> PARSEOP_SHARETYPE_SHARED
> +%token <i> PARSEOP_SHARETYPE_SHAREDWAKE
>  %token <i> PARSEOP_SHIFTLEFT
>  %token <i> PARSEOP_SHIFTRIGHT
>  %token <i> PARSEOP_SIGNAL
>  %token <i> PARSEOP_SIZEOF
> +%token <i> PARSEOP_SLAVEMODE_CONTROLLERINIT
> +%token <i> PARSEOP_SLAVEMODE_DEVICEINIT
>  %token <i> PARSEOP_SLEEP
> +%token <i> PARSEOP_SPI_SERIALBUS
>  %token <i> PARSEOP_STALL
>  %token <i> PARSEOP_STARTDEPENDENTFN
>  %token <i> PARSEOP_STARTDEPENDENTFN_NOPRI
> +%token <i> PARSEOP_STOPBITS_ONE
> +%token <i> PARSEOP_STOPBITS_ONEPLUSHALF
> +%token <i> PARSEOP_STOPBITS_TWO
> +%token <i> PARSEOP_STOPBITS_ZERO
>  %token <i> PARSEOP_STORE
>  %token <s> PARSEOP_STRING_LITERAL
>  %token <i> PARSEOP_SUBTRACT
> @@ -429,6 +486,7 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_TRANSLATIONTYPE_SPARSE
>  %token <i> PARSEOP_TYPE_STATIC
>  %token <i> PARSEOP_TYPE_TRANSLATION
> +%token <i> PARSEOP_UART_SERIALBUS
>  %token <i> PARSEOP_UNICODE
>  %token <i> PARSEOP_UNLOAD
>  %token <i> PARSEOP_UPDATERULE_ONES
> @@ -439,10 +497,18 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP_VENDORSHORT
>  %token <i> PARSEOP_WAIT
>  %token <i> PARSEOP_WHILE
> +%token <i> PARSEOP_WIREMODE_FOUR
> +%token <i> PARSEOP_WIREMODE_THREE
>  %token <i> PARSEOP_WORDBUSNUMBER
>  %token <i> PARSEOP_WORDCONST
>  %token <i> PARSEOP_WORDIO
>  %token <i> PARSEOP_WORDSPACE
> +%token <i> PARSEOP_XFERSIZE_8
> +%token <i> PARSEOP_XFERSIZE_16
> +%token <i> PARSEOP_XFERSIZE_32
> +%token <i> PARSEOP_XFERSIZE_64
> +%token <i> PARSEOP_XFERSIZE_128
> +%token <i> PARSEOP_XFERSIZE_256
>  %token <i> PARSEOP_XFERTYPE_8
>  %token <i> PARSEOP_XFERTYPE_8_16
>  %token <i> PARSEOP_XFERTYPE_16
> @@ -456,64 +522,62 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %token <i> PARSEOP___DATE__
>  %token <i> PARSEOP___FILE__
>  %token <i> PARSEOP___LINE__
> +%token <i> PARSEOP___PATH__
>
> -/*
> +
> +/******************************************************************************
> + *
>  * Production names
> - */
> + *
> + *****************************************************************************/
>
> +%type <n> ArgList
>  %type <n> ASLCode
> -%type <n> DefinitionBlockTerm
> -%type <n> TermList
> -%type <n> Term
> +%type <n> BufferData
> +%type <n> BufferTermData
>  %type <n> CompilerDirective
> -%type <n> ObjectList
> -%type <n> Object
>  %type <n> DataObject
> -%type <n> BufferData
> -%type <n> PackageData
> +%type <n> DefinitionBlockTerm
>  %type <n> IntegerData
> -%type <n> StringData
>  %type <n> NamedObject
>  %type <n> NameSpaceModifier
> -%type <n> UserTerm
> -%type <n> ArgList
> -%type <n> TermArg
> -%type <n> Target
> -%type <n> RequiredTarget
> -%type <n> SimpleTarget
> -%type <n> BufferTermData
> +%type <n> Object
> +%type <n> ObjectList
> +%type <n> PackageData
>  %type <n> ParameterTypePackage
>  %type <n> ParameterTypePackageList
>  %type <n> ParameterTypesPackage
>  %type <n> ParameterTypesPackageList
> +%type <n> RequiredTarget
> +%type <n> SimpleTarget
> +%type <n> StringData
> +%type <n> Target
> +%type <n> Term
> +%type <n> TermArg
> +%type <n> TermList
> +%type <n> UserTerm
> +
> +/* Type4Opcode is obsolete */
>
>  %type <n> Type1Opcode
> -%type <n> Type2Opcode
> -%type <n> Type2IntegerOpcode
> -%type <n> Type2StringOpcode
>  %type <n> Type2BufferOpcode
>  %type <n> Type2BufferOrStringOpcode
> +%type <n> Type2IntegerOpcode
> +%type <n> Type2Opcode
> +%type <n> Type2StringOpcode
>  %type <n> Type3Opcode
> -
> -/* Obsolete %type <n> Type4Opcode */
> -
>  %type <n> Type5Opcode
>  %type <n> Type6Opcode
>
> -%type <n> LineTerm
> -%type <n> IncludeTerm
> -%type <n> IncludeCStyleTerm
> +%type <n> AccessAsTerm
>  %type <n> ExternalTerm
> -
> -%type <n> FieldUnitList
>  %type <n> FieldUnit
>  %type <n> FieldUnitEntry
> -
> +%type <n> FieldUnitList
> +%type <n> IncludeTerm
>  %type <n> OffsetTerm
> -%type <n> AccessAsTerm
>  %type <n> OptionalAccessAttribTerm
>
> -
>  /* Named Objects */
>
>  %type <n> BankFieldTerm
> @@ -537,7 +601,6 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> ProcessorTerm
>  %type <n> ThermalZoneTerm
>
> -
>  /* Namespace modifiers */
>
>  %type <n> AliasTerm
> @@ -546,13 +609,16 @@ void *                      AslLocalAllocate (unsigned int Size);
>
>  /* Type 1 opcodes */
>
> -%type <n> BreakTerm
>  %type <n> BreakPointTerm
> +%type <n> BreakTerm
> +%type <n> CaseDefaultTermList
> +%type <n> CaseTerm
>  %type <n> ContinueTerm
> +%type <n> DefaultTerm
> +%type <n> ElseTerm
>  %type <n> FatalTerm
>  %type <n> IfElseTerm
>  %type <n> IfTerm
> -%type <n> ElseTerm
>  %type <n> LoadTerm
>  %type <n> NoOpTerm
>  %type <n> NotifyTerm
> @@ -563,20 +629,17 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> SleepTerm
>  %type <n> StallTerm
>  %type <n> SwitchTerm
> -%type <n> CaseDefaultTermList
> -//%type <n> CaseTermList
> -%type <n> CaseTerm
> -%type <n> DefaultTerm
>  %type <n> UnloadTerm
>  %type <n> WhileTerm
> +//%type <n> CaseTermList
>
>  /* Type 2 opcodes */
>
>  %type <n> AcquireTerm
>  %type <n> AddTerm
>  %type <n> AndTerm
> -%type <n> ConcatTerm
>  %type <n> ConcatResTerm
> +%type <n> ConcatTerm
>  %type <n> CondRefOfTerm
>  %type <n> CopyObjectTerm
>  %type <n> DecTerm
> @@ -589,12 +652,12 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> IndexTerm
>  %type <n> LAndTerm
>  %type <n> LEqualTerm
> -%type <n> LGreaterTerm
>  %type <n> LGreaterEqualTerm
> -%type <n> LLessTerm
> +%type <n> LGreaterTerm
>  %type <n> LLessEqualTerm
> -%type <n> LNotTerm
> +%type <n> LLessTerm
>  %type <n> LNotEqualTerm
> +%type <n> LNotTerm
>  %type <n> LoadTableTerm
>  %type <n> LOrTerm
>  %type <n> MatchTerm
> @@ -622,39 +685,49 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> WaitTerm
>  %type <n> XOrTerm
>
> -%type <n> OptionalTermArg
> -%type <n> OptionalReturnArg
> -%type <n> OptionalListString
> -
> -
>  /* Keywords */
>
> -%type <n> ObjectTypeKeyword
> -%type <n> AccessTypeKeyword
>  %type <n> AccessAttribKeyword
> -%type <n> LockRuleKeyword
> -%type <n> UpdateRuleKeyword
> -%type <n> RegionSpaceKeyword
> +%type <n> AccessTypeKeyword
> +%type <n> AddressingModeKeyword
> +%type <n> AddressKeyword
>  %type <n> AddressSpaceKeyword
> -%type <n> MatchOpKeyword
> -%type <n> SerializeRuleKeyword
> +%type <n> BitsPerByteKeyword
> +%type <n> ClockPhaseKeyword
> +%type <n> ClockPolarityKeyword
> +%type <n> DecodeKeyword
> +%type <n> DevicePolarityKeyword
>  %type <n> DMATypeKeyword
> -%type <n> OptionalBusMasterKeyword
> -%type <n> XferTypeKeyword
> -%type <n> ResourceTypeKeyword
> -%type <n> MinKeyword
> +%type <n> EndianKeyword
> +%type <n> FlowControlKeyword
> +%type <n> InterruptLevel
> +%type <n> InterruptTypeKeyword
> +%type <n> IODecodeKeyword
> +%type <n> IoRestrictionKeyword
> +%type <n> LockRuleKeyword
> +%type <n> MatchOpKeyword
>  %type <n> MaxKeyword
> -%type <n> DecodeKeyword
> -%type <n> RangeTypeKeyword
>  %type <n> MemTypeKeyword
> +%type <n> MinKeyword
> +%type <n> ObjectTypeKeyword
> +%type <n> OptionalBusMasterKeyword
>  %type <n> OptionalReadWriteKeyword
> -%type <n> InterruptTypeKeyword
> -%type <n> InterruptLevel
> +%type <n> ParityTypeKeyword
> +%type <n> PinConfigByte
> +%type <n> PinConfigKeyword
> +%type <n> RangeTypeKeyword
> +%type <n> RegionSpaceKeyword
> +%type <n> ResourceTypeKeyword
> +%type <n> SerializeRuleKeyword
>  %type <n> ShareTypeKeyword
> -%type <n> IODecodeKeyword
> -%type <n> TypeKeyword
> +%type <n> SlaveModeKeyword
> +%type <n> StopBitsKeyword
>  %type <n> TranslationKeyword
> -%type <n> AddressKeyword
> +%type <n> TypeKeyword
> +%type <n> UpdateRuleKeyword
> +%type <n> WireModeKeyword
> +%type <n> XferSizeKeyword
> +%type <n> XferTypeKeyword
>
>  /* Types */
>
> @@ -671,31 +744,34 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> String
>
>  %type <n> ConstTerm
> +%type <n> ConstExprTerm
>  %type <n> ByteConstExpr
>  %type <n> WordConstExpr
>  %type <n> DWordConstExpr
>  %type <n> QWordConstExpr
> -%type <n> ConstExprTerm
>
> +%type <n> DWordList
>  %type <n> BufferTerm
>  %type <n> ByteList
> -%type <n> DWordList
>
> -%type <n> PackageTerm
> -%type <n> PackageList
>  %type <n> PackageElement
> -
> +%type <n> PackageList
> +%type <n> PackageTerm
>  %type <n> VarPackageLengthTerm
>
>  /* Macros */
>
>  %type <n> EISAIDTerm
> +%type <n> ResourceMacroList
> +%type <n> ResourceMacroTerm
>  %type <n> ResourceTemplateTerm
>  %type <n> ToUUIDTerm
>  %type <n> UnicodeTerm
> -%type <n> ResourceMacroList
> -%type <n> ResourceMacroTerm
>
> +/* Resource Descriptors */
> +
> +%type <n> ConnectionTerm
> +%type <n> DataBufferTerm
>  %type <n> DMATerm
>  %type <n> DWordIOTerm
>  %type <n> DWordMemoryTerm
> @@ -704,7 +780,11 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> ExtendedIOTerm
>  %type <n> ExtendedMemoryTerm
>  %type <n> ExtendedSpaceTerm
> +%type <n> FixedDmaTerm
>  %type <n> FixedIOTerm
> +%type <n> GpioIntTerm
> +%type <n> GpioIoTerm
> +%type <n> I2cSerialBusTerm
>  %type <n> InterruptTerm
>  %type <n> IOTerm
>  %type <n> IRQNoFlagsTerm
> @@ -712,59 +792,75 @@ void *                      AslLocalAllocate (unsigned int Size);
>  %type <n> Memory24Term
>  %type <n> Memory32FixedTerm
>  %type <n> Memory32Term
> +%type <n> NameSeg
> +%type <n> NameString
>  %type <n> QWordIOTerm
>  %type <n> QWordMemoryTerm
>  %type <n> QWordSpaceTerm
>  %type <n> RegisterTerm
> -%type <n> StartDependentFnTerm
> +%type <n> SpiSerialBusTerm
>  %type <n> StartDependentFnNoPriTerm
> +%type <n> StartDependentFnTerm
> +%type <n> UartSerialBusTerm
>  %type <n> VendorLongTerm
>  %type <n> VendorShortTerm
>  %type <n> WordBusNumberTerm
>  %type <n> WordIOTerm
>  %type <n> WordSpaceTerm
>
> -%type <n> NameString
> -%type <n> NameSeg
> -
> -
>  /* Local types that help construct the AML, not in ACPI spec */
>
> -%type <n> IncludeEndTerm
>  %type <n> AmlPackageLengthTerm
> +%type <n> IncludeEndTerm
> +%type <n> NameStringItem
> +%type <n> TermArgItem
> +
> +%type <n> OptionalAccessSize
> +%type <n> OptionalAddressingMode
> +%type <n> OptionalAddressRange
> +%type <n> OptionalBitsPerByte
> +%type <n> OptionalBuffer_Last
>  %type <n> OptionalByteConstExpr
> +%type <n> OptionalCount
> +%type <n> OptionalDecodeType
> +%type <n> OptionalDevicePolarity
>  %type <n> OptionalDWordConstExpr
> -%type <n> OptionalQWordConstExpr
> -%type <n> OptionalSerializeRuleKeyword
> -%type <n> OptionalResourceType_First
> -%type <n> OptionalResourceType
> -%type <n> OptionalMinType
> +%type <n> OptionalEndian
> +%type <n> OptionalFlowControl
> +%type <n> OptionalIoRestriction
> +%type <n> OptionalListString
>  %type <n> OptionalMaxType
>  %type <n> OptionalMemType
> -%type <n> OptionalCount
> -%type <n> OptionalDecodeType
> -%type <n> OptionalRangeType
> -%type <n> OptionalShareType
> -%type <n> OptionalType
> -%type <n> OptionalType_Last
> -%type <n> OptionalTranslationType_Last
> -%type <n> OptionalStringData
> +%type <n> OptionalMinType
>  %type <n> OptionalNameString
>  %type <n> OptionalNameString_First
>  %type <n> OptionalNameString_Last
> -%type <n> OptionalAddressRange
>  %type <n> OptionalObjectTypeKeyword
>  %type <n> OptionalParameterTypePackage
>  %type <n> OptionalParameterTypesPackage
> +%type <n> OptionalParityType
> +%type <n> OptionalQWordConstExpr
> +%type <n> OptionalRangeType
>  %type <n> OptionalReference
> -%type <n> OptionalAccessSize
> -
> -%type <n> TermArgItem
> -%type <n> NameStringItem
> +%type <n> OptionalResourceType
> +%type <n> OptionalResourceType_First
> +%type <n> OptionalReturnArg
> +%type <n> OptionalSerializeRuleKeyword
> +%type <n> OptionalShareType
> +%type <n> OptionalShareType_First
> +%type <n> OptionalSlaveMode
> +%type <n> OptionalStopBits
> +%type <n> OptionalStringData
> +%type <n> OptionalTermArg
> +%type <n> OptionalTranslationType_Last
> +%type <n> OptionalType
> +%type <n> OptionalType_Last
> +%type <n> OptionalWireMode
> +%type <n> OptionalWordConst
> +%type <n> OptionalWordConstExpr
> +%type <n> OptionalXferSize
>
>  %%
> -
> -
>  /*******************************************************************************
>  *
>  * Production rules start here
> @@ -777,15 +873,19 @@ void *                      AslLocalAllocate (unsigned int Size);
>
>
>  /*
> - * Blocks, Data, and Opcodes
> + * Root rule. Allow multiple #line directives before the definition block
> + * to handle output from preprocessors
>  */
> -
>  ASLCode
>     : DefinitionBlockTerm
>     | error                         {YYABORT; $$ = NULL;}
>     ;
>
>  /*
> + * Blocks, Data, and Opcodes
> + */
> +
> +/*
>  * Note concerning support for "module-level code".
>  *
>  * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
> @@ -801,7 +901,7 @@ ASLCode
>  * of Type1 and Type2 opcodes at module level.
>  */
>  DefinitionBlockTerm
> -    : PARSEOP_DEFINITIONBLOCK '('      {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
> +    : PARSEOP_DEFINITIONBLOCK '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
>         String ','
>         String ','
>         ByteConst ','
> @@ -817,7 +917,9 @@ DefinitionBlockTerm
>  TermList
>     :                               {$$ = NULL;}
>     | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
> +    | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
>     | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
> +    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
>     ;
>
>  Term
> @@ -833,8 +935,6 @@ Term
>
>  CompilerDirective
>     : IncludeTerm                   {}
> -    | IncludeCStyleTerm             {$$ = NULL;}
> -    | LineTerm                                         {$$ = NULL;}
>     | ExternalTerm                  {}
>     ;
>
> @@ -1118,26 +1218,16 @@ Type6Opcode
>     ;
>
>  IncludeTerm
> -    : PARSEOP_INCLUDE '('                      {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
> +    : PARSEOP_INCLUDE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE);}
>         String  ')'                 {TrLinkChildren ($<n>3,1,$4);FlOpenIncludeFile ($4);}
>         TermList
>         IncludeEndTerm              {$$ = TrLinkPeerNodes (3,$<n>3,$7,$8);}
>     ;
>
>  IncludeEndTerm
> -    : PARSEOP_INCLUDE_END                      {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
> +    : PARSEOP_INCLUDE_END           {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);}
>     ;
>
> -IncludeCStyleTerm
> -    : PARSEOP_INCLUDE_CSTYLE
> -        String                      {FlOpenIncludeFile ($2);}
> -    ;
> -
> -LineTerm
> -       : PARSEOP_LINE_CSTYLE
> -               Integer                                         {FlSetLineNumber ($2);}
> -       ;
> -
>  ExternalTerm
>     : PARSEOP_EXTERNAL '('
>         NameString
> @@ -1154,7 +1244,7 @@ ExternalTerm
>
>
>  BankFieldTerm
> -    : PARSEOP_BANKFIELD '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
> +    : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
>         NameString
>         NameStringItem
>         TermArgItem
> @@ -1179,6 +1269,7 @@ FieldUnit
>     : FieldUnitEntry                {}
>     | OffsetTerm                    {}
>     | AccessAsTerm                  {}
> +    | ConnectionTerm                {}
>     ;
>
>  FieldUnitEntry
> @@ -1204,8 +1295,23 @@ AccessAsTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> +ConnectionTerm
> +    : PARSEOP_CONNECTION '('
> +        NameString
> +        ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
> +    | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
> +        ResourceMacroTerm
> +        ')'                         {$$ = TrLinkChildren ($<n>3, 1,
> +                                            TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
> +                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> +                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
> +                                                $4));}
> +    | PARSEOP_CONNECTION '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
>  CreateBitFieldTerm
> -    : PARSEOP_CREATEBITFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
> +    : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
>         TermArg
>         TermArgItem
>         NameStringItem
> @@ -1215,7 +1321,7 @@ CreateBitFieldTerm
>     ;
>
>  CreateByteFieldTerm
> -    : PARSEOP_CREATEBYTEFIELD '('      {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
> +    : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
>         TermArg
>         TermArgItem
>         NameStringItem
> @@ -1225,7 +1331,7 @@ CreateByteFieldTerm
>     ;
>
>  CreateDWordFieldTerm
> -    : PARSEOP_CREATEDWORDFIELD '('     {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
> +    : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
>         TermArg
>         TermArgItem
>         NameStringItem
> @@ -1235,7 +1341,7 @@ CreateDWordFieldTerm
>     ;
>
>  CreateFieldTerm
> -    : PARSEOP_CREATEFIELD '('          {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
> +    : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
>         TermArg
>         TermArgItem
>         TermArgItem
> @@ -1246,7 +1352,7 @@ CreateFieldTerm
>     ;
>
>  CreateQWordFieldTerm
> -    : PARSEOP_CREATEQWORDFIELD '('     {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
> +    : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
>         TermArg
>         TermArgItem
>         NameStringItem
> @@ -1256,7 +1362,7 @@ CreateQWordFieldTerm
>     ;
>
>  CreateWordFieldTerm
> -    : PARSEOP_CREATEWORDFIELD '('      {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
> +    : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
>         TermArg
>         TermArgItem
>         NameStringItem
> @@ -1266,7 +1372,7 @@ CreateWordFieldTerm
>     ;
>
>  DataRegionTerm
> -    : PARSEOP_DATATABLEREGION '('      {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
> +    : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
>         NameString
>         TermArgItem
>         TermArgItem
> @@ -1277,7 +1383,7 @@ DataRegionTerm
>     ;
>
>  DeviceTerm
> -    : PARSEOP_DEVICE '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
> +    : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
>         NameString
>         ')' '{'
>             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> @@ -1286,7 +1392,7 @@ DeviceTerm
>     ;
>
>  EventTerm
> -    : PARSEOP_EVENT '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
> +    : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
>         NameString
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
>     | PARSEOP_EVENT '('
> @@ -1294,7 +1400,7 @@ EventTerm
>     ;
>
>  FieldTerm
> -    : PARSEOP_FIELD '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
> +    : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
>         NameString
>         ',' AccessTypeKeyword
>         ',' LockRuleKeyword
> @@ -1306,7 +1412,7 @@ FieldTerm
>     ;
>
>  FunctionTerm
> -    : PARSEOP_FUNCTION '('                     {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> +    : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
>         NameString
>         OptionalParameterTypePackage
>         OptionalParameterTypesPackage
> @@ -1320,7 +1426,7 @@ FunctionTerm
>     ;
>
>  IndexFieldTerm
> -    : PARSEOP_INDEXFIELD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
> +    : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
>         NameString
>         NameStringItem
>         ',' AccessTypeKeyword
> @@ -1333,7 +1439,7 @@ IndexFieldTerm
>     ;
>
>  MethodTerm
> -    : PARSEOP_METHOD  '('                      {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
> +    : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
>         NameString
>         OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
>         OptionalSerializeRuleKeyword
> @@ -1347,7 +1453,7 @@ MethodTerm
>     ;
>
>  MutexTerm
> -    : PARSEOP_MUTEX '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
> +    : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
>         NameString
>         ',' ByteConstExpr
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> @@ -1356,7 +1462,7 @@ MutexTerm
>     ;
>
>  OpRegionTerm
> -    : PARSEOP_OPERATIONREGION '('      {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
> +    : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
>         NameString
>         ',' OpRegionSpaceIdTerm
>         TermArgItem
> @@ -1372,7 +1478,7 @@ OpRegionSpaceIdTerm
>     ;
>
>  PowerResTerm
> -    : PARSEOP_POWERRESOURCE '('                {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
> +    : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
>         NameString
>         ',' ByteConstExpr
>         ',' WordConstExpr
> @@ -1383,7 +1489,7 @@ PowerResTerm
>     ;
>
>  ProcessorTerm
> -    : PARSEOP_PROCESSOR '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
> +    : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
>         NameString
>         ',' ByteConstExpr
>         OptionalDWordConstExpr
> @@ -1395,7 +1501,7 @@ ProcessorTerm
>     ;
>
>  ThermalZoneTerm
> -    : PARSEOP_THERMALZONE '('          {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
> +    : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
>         NameString
>         ')' '{'
>             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> @@ -1408,7 +1514,7 @@ ThermalZoneTerm
>
>
>  AliasTerm
> -    : PARSEOP_ALIAS '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
> +    : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
>         NameString
>         NameStringItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
> @@ -1417,7 +1523,7 @@ AliasTerm
>     ;
>
>  NameTerm
> -    : PARSEOP_NAME '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
> +    : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
>         NameString
>         ',' DataObject
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
> @@ -1426,7 +1532,7 @@ NameTerm
>     ;
>
>  ScopeTerm
> -    : PARSEOP_SCOPE '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
> +    : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
>         NameString
>         ')' '{'
>             ObjectList '}'          {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
> @@ -1439,19 +1545,19 @@ ScopeTerm
>
>
>  BreakTerm
> -    : PARSEOP_BREAK                                    {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
> +    : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
>     ;
>
>  BreakPointTerm
> -    : PARSEOP_BREAKPOINT                       {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
> +    : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
>     ;
>
>  ContinueTerm
> -    : PARSEOP_CONTINUE                         {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
> +    : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
>     ;
>
>  FatalTerm
> -    : PARSEOP_FATAL '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
> +    : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
>         ByteConstExpr
>         ',' DWordConstExpr
>         TermArgItem
> @@ -1465,7 +1571,7 @@ IfElseTerm
>     ;
>
>  IfTerm
> -    : PARSEOP_IF '('                           {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> +    : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
>         TermArg
>         ')' '{'
>             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> @@ -1476,7 +1582,7 @@ IfTerm
>
>  ElseTerm
>     :                               {$$ = NULL;}
> -    | PARSEOP_ELSE '{'                         {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> +    | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
>         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
>
>     | PARSEOP_ELSE '{'
> @@ -1485,10 +1591,10 @@ ElseTerm
>     | PARSEOP_ELSE
>         error                       {$$ = AslDoError(); yyclearin;}
>
> -    | PARSEOP_ELSEIF '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> -        TermArg                                                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
> +    | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
> +        TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
>         ')' '{'
> -            TermList '}'                   {TrLinkChildren ($<n>5,2,$4,$8);}
> +            TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
>         ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
>                                     {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
>
> @@ -1500,7 +1606,7 @@ ElseTerm
>     ;
>
>  LoadTerm
> -    : PARSEOP_LOAD '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
> +    : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
>         NameString
>         RequiredTarget
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1509,11 +1615,11 @@ LoadTerm
>     ;
>
>  NoOpTerm
> -    : PARSEOP_NOOP                                     {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
> +    : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
>     ;
>
>  NotifyTerm
> -    : PARSEOP_NOTIFY '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
> +    : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
>         SuperName
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1522,7 +1628,7 @@ NotifyTerm
>     ;
>
>  ReleaseTerm
> -    : PARSEOP_RELEASE '('                      {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
> +    : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_RELEASE '('
> @@ -1530,7 +1636,7 @@ ReleaseTerm
>     ;
>
>  ResetTerm
> -    : PARSEOP_RESET '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
> +    : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_RESET '('
> @@ -1538,16 +1644,16 @@ ResetTerm
>     ;
>
>  ReturnTerm
> -    : PARSEOP_RETURN '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
> +    : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
>         OptionalReturnArg
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
> -    | PARSEOP_RETURN                           {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
> +    | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
>     | PARSEOP_RETURN '('
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
>  SignalTerm
> -    : PARSEOP_SIGNAL '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
> +    : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_SIGNAL '('
> @@ -1555,7 +1661,7 @@ SignalTerm
>     ;
>
>  SleepTerm
> -    : PARSEOP_SLEEP '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
> +    : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
>         TermArg
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_SLEEP '('
> @@ -1563,7 +1669,7 @@ SleepTerm
>     ;
>
>  StallTerm
> -    : PARSEOP_STALL '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
> +    : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
>         TermArg
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_STALL '('
> @@ -1571,7 +1677,7 @@ StallTerm
>     ;
>
>  SwitchTerm
> -    : PARSEOP_SWITCH '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
> +    : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
>         TermArg
>         ')' '{'
>             CaseDefaultTermList '}'
> @@ -1614,7 +1720,7 @@ CaseTermList
>  */
>
>  CaseTerm
> -    : PARSEOP_CASE '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
> +    : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
>         DataObject
>         ')' '{'
>             TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> @@ -1623,14 +1729,14 @@ CaseTerm
>     ;
>
>  DefaultTerm
> -    : PARSEOP_DEFAULT '{'                      {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
> +    : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
>         TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_DEFAULT '{'
>         error '}'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
>  UnloadTerm
> -    : PARSEOP_UNLOAD '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
> +    : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_UNLOAD '('
> @@ -1638,7 +1744,7 @@ UnloadTerm
>     ;
>
>  WhileTerm
> -    : PARSEOP_WHILE '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
> +    : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
>         TermArg
>         ')' '{' TermList '}'
>                                     {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> @@ -1650,7 +1756,7 @@ WhileTerm
>  /******* Type 2 opcodes *******************************************************/
>
>  AcquireTerm
> -    : PARSEOP_ACQUIRE '('                      {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
> +    : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
>         SuperName
>         ',' WordConstExpr
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
> @@ -1659,7 +1765,7 @@ AcquireTerm
>     ;
>
>  AddTerm
> -    : PARSEOP_ADD '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
> +    : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1669,7 +1775,7 @@ AddTerm
>     ;
>
>  AndTerm
> -    : PARSEOP_AND '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
> +    : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1679,7 +1785,7 @@ AndTerm
>     ;
>
>  ConcatTerm
> -    : PARSEOP_CONCATENATE '('          {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
> +    : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1699,7 +1805,7 @@ ConcatResTerm
>     ;
>
>  CondRefOfTerm
> -    : PARSEOP_CONDREFOF '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
> +    : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
>         SuperName
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1708,7 +1814,7 @@ CondRefOfTerm
>     ;
>
>  CopyObjectTerm
> -    : PARSEOP_COPYOBJECT '('           {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
> +    : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
>         TermArg
>         ',' SimpleTarget
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> @@ -1717,7 +1823,7 @@ CopyObjectTerm
>     ;
>
>  DecTerm
> -    : PARSEOP_DECREMENT '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
> +    : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_DECREMENT '('
> @@ -1725,7 +1831,7 @@ DecTerm
>     ;
>
>  DerefOfTerm
> -    : PARSEOP_DEREFOF '('                      {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
> +    : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
>         TermArg
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_DEREFOF '('
> @@ -1733,7 +1839,7 @@ DerefOfTerm
>     ;
>
>  DivideTerm
> -    : PARSEOP_DIVIDE '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
> +    : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1744,7 +1850,7 @@ DivideTerm
>     ;
>
>  FindSetLeftBitTerm
> -    : PARSEOP_FINDSETLEFTBIT '('       {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
> +    : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1753,7 +1859,7 @@ FindSetLeftBitTerm
>     ;
>
>  FindSetRightBitTerm
> -    : PARSEOP_FINDSETRIGHTBIT '('      {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
> +    : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1762,7 +1868,7 @@ FindSetRightBitTerm
>     ;
>
>  FromBCDTerm
> -    : PARSEOP_FROMBCD '('                      {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
> +    : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1771,7 +1877,7 @@ FromBCDTerm
>     ;
>
>  IncTerm
> -    : PARSEOP_INCREMENT '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
> +    : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_INCREMENT '('
> @@ -1779,7 +1885,7 @@ IncTerm
>     ;
>
>  IndexTerm
> -    : PARSEOP_INDEX '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
> +    : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1789,7 +1895,7 @@ IndexTerm
>     ;
>
>  LAndTerm
> -    : PARSEOP_LAND '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
> +    : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1798,7 +1904,7 @@ LAndTerm
>     ;
>
>  LEqualTerm
> -    : PARSEOP_LEQUAL '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> +    : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1807,7 +1913,7 @@ LEqualTerm
>     ;
>
>  LGreaterTerm
> -    : PARSEOP_LGREATER '('                     {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> +    : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1816,7 +1922,7 @@ LGreaterTerm
>     ;
>
>  LGreaterEqualTerm
> -    : PARSEOP_LGREATEREQUAL '('                {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> +    : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> @@ -1825,7 +1931,7 @@ LGreaterEqualTerm
>     ;
>
>  LLessTerm
> -    : PARSEOP_LLESS '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
> +    : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1834,7 +1940,7 @@ LLessTerm
>     ;
>
>  LLessEqualTerm
> -    : PARSEOP_LLESSEQUAL '('           {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
> +    : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> @@ -1843,7 +1949,7 @@ LLessEqualTerm
>     ;
>
>  LNotTerm
> -    : PARSEOP_LNOT '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
> +    : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
>         TermArg
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_LNOT '('
> @@ -1851,7 +1957,7 @@ LNotTerm
>     ;
>
>  LNotEqualTerm
> -    : PARSEOP_LNOTEQUAL '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
> +    : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
> @@ -1860,7 +1966,7 @@ LNotEqualTerm
>     ;
>
>  LoadTableTerm
> -    : PARSEOP_LOADTABLE '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
> +    : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
>         TermArg
>         TermArgItem
>         TermArgItem
> @@ -1873,7 +1979,7 @@ LoadTableTerm
>     ;
>
>  LOrTerm
> -    : PARSEOP_LOR '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
> +    : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
>         TermArg
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1882,7 +1988,7 @@ LOrTerm
>     ;
>
>  MatchTerm
> -    : PARSEOP_MATCH '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
> +    : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
>         TermArg
>         ',' MatchOpKeyword
>         TermArgItem
> @@ -1895,7 +2001,7 @@ MatchTerm
>     ;
>
>  MidTerm
> -    : PARSEOP_MID '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
> +    : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
>         TermArg
>         TermArgItem
>         TermArgItem
> @@ -1906,7 +2012,7 @@ MidTerm
>     ;
>
>  ModTerm
> -    : PARSEOP_MOD '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
> +    : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1916,7 +2022,7 @@ ModTerm
>     ;
>
>  MultiplyTerm
> -    : PARSEOP_MULTIPLY '('                     {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
> +    : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1926,7 +2032,7 @@ MultiplyTerm
>     ;
>
>  NAndTerm
> -    : PARSEOP_NAND '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
> +    : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1936,7 +2042,7 @@ NAndTerm
>     ;
>
>  NOrTerm
> -    : PARSEOP_NOR '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
> +    : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1946,7 +2052,7 @@ NOrTerm
>     ;
>
>  NotTerm
> -    : PARSEOP_NOT '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
> +    : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -1955,7 +2061,7 @@ NotTerm
>     ;
>
>  ObjectTypeTerm
> -    : PARSEOP_OBJECTTYPE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
> +    : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_OBJECTTYPE '('
> @@ -1963,7 +2069,7 @@ ObjectTypeTerm
>     ;
>
>  OrTerm
> -    : PARSEOP_OR '('                           {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
> +    : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1977,7 +2083,7 @@ OrTerm
>  * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
>  */
>  RefOfTerm
> -    : PARSEOP_REFOF '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
> +    : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
>     | PARSEOP_REFOF '('
> @@ -1985,7 +2091,7 @@ RefOfTerm
>     ;
>
>  ShiftLeftTerm
> -    : PARSEOP_SHIFTLEFT '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
> +    : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
>         TermArg
>         TermArgItem
>         Target
> @@ -1995,7 +2101,7 @@ ShiftLeftTerm
>     ;
>
>  ShiftRightTerm
> -    : PARSEOP_SHIFTRIGHT '('           {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
> +    : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
>         TermArg
>         TermArgItem
>         Target
> @@ -2005,7 +2111,7 @@ ShiftRightTerm
>     ;
>
>  SizeOfTerm
> -    : PARSEOP_SIZEOF '('                       {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
> +    : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
>         SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
>     | PARSEOP_SIZEOF '('
> @@ -2013,7 +2119,7 @@ SizeOfTerm
>     ;
>
>  StoreTerm
> -    : PARSEOP_STORE '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
> +    : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
>         TermArg
>         ',' SuperName
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
> @@ -2022,7 +2128,7 @@ StoreTerm
>     ;
>
>  SubtractTerm
> -    : PARSEOP_SUBTRACT '('                     {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
> +    : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
>         TermArg
>         TermArgItem
>         Target
> @@ -2032,15 +2138,15 @@ SubtractTerm
>     ;
>
>  TimerTerm
> -    : PARSEOP_TIMER '('                            {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
> +    : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
>         ')'                         {$$ = TrLinkChildren ($<n>3,0);}
> -    | PARSEOP_TIMER                        {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
> +    | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
>     | PARSEOP_TIMER '('
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
>  ToBCDTerm
> -    : PARSEOP_TOBCD '('                                {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
> +    : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2049,7 +2155,7 @@ ToBCDTerm
>     ;
>
>  ToBufferTerm
> -    : PARSEOP_TOBUFFER '('                     {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
> +    : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2058,7 +2164,7 @@ ToBufferTerm
>     ;
>
>  ToDecimalStringTerm
> -    : PARSEOP_TODECIMALSTRING '('      {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
> +    : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2067,7 +2173,7 @@ ToDecimalStringTerm
>     ;
>
>  ToHexStringTerm
> -    : PARSEOP_TOHEXSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
> +    : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2076,7 +2182,7 @@ ToHexStringTerm
>     ;
>
>  ToIntegerTerm
> -    : PARSEOP_TOINTEGER '('                    {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
> +    : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
>         TermArg
>         Target
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2085,7 +2191,7 @@ ToIntegerTerm
>     ;
>
>  ToStringTerm
> -    : PARSEOP_TOSTRING '('                     {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
> +    : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
>         TermArg
>         OptionalCount
>         Target
> @@ -2102,7 +2208,7 @@ ToUUIDTerm
>     ;
>
>  WaitTerm
> -    : PARSEOP_WAIT '('                         {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
> +    : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
>         SuperName
>         TermArgItem
>         ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
> @@ -2111,7 +2217,7 @@ WaitTerm
>     ;
>
>  XOrTerm
> -    : PARSEOP_XOR '('                          {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
> +    : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
>         TermArg
>         TermArgItem
>         Target
> @@ -2124,23 +2230,23 @@ XOrTerm
>  /******* Keywords *************************************************************/
>
>
> -ObjectTypeKeyword
> -    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> -    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
> -    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
> -    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
> -    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
> -    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
> -    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
> -    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
> -    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
> -    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
> -    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
> -    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
> -    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
> -    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
> -    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
> -    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
> +AccessAttribKeyword
> +    : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
> +    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
> +    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
> +    | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
> +    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
> +    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
> +    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
> +    | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
> +        ByteConst
> +        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
> +        ByteConst
> +        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
> +    | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
> +        ByteConst
> +        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
>     ;
>
>  AccessTypeKeyword
> @@ -2152,49 +2258,95 @@ AccessTypeKeyword
>     | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
>     ;
>
> -AccessAttribKeyword
> -    : PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
> -    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
> -    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
> -    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
> -    | PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
> -    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
> -    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
> +AddressingModeKeyword
> +    : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
> +    | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
>     ;
>
> -LockRuleKeyword
> -    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
> -    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
> +AddressKeyword
> +    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
> +    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
> +    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
> +    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
>     ;
>
> -UpdateRuleKeyword
> -    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
> -    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
> -    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
> +AddressSpaceKeyword
> +    : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> +    | RegionSpaceKeyword                    {}
>     ;
>
> +BitsPerByteKeyword
> +    : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
> +    | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
> +    | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
> +    | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
> +    | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
> +    ;
>
> -RegionSpaceKeyword
> -    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
> -    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
> -    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
> -    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
> -    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
> -    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
> -    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
> -    | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
> +ClockPhaseKeyword
> +    : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
> +    | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
>     ;
>
> -AddressSpaceKeyword
> -    : ByteConst                                                                {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> -    | RegionSpaceKeyword                                       {}
> -    | PARSEOP_ADDRESSSPACE_FFIXEDHW         {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);}
> +ClockPolarityKeyword
> +    : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
> +    | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
>     ;
>
> +DecodeKeyword
> +    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
> +    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
> +    ;
>
> -SerializeRuleKeyword
> -    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
> -    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
> +DevicePolarityKeyword
> +    : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
> +    | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
> +    ;
> +
> +DMATypeKeyword
> +    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
> +    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
> +    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
> +    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
> +    ;
> +
> +EndianKeyword
> +    : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
> +    | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
> +    ;
> +
> +FlowControlKeyword
> +    : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
> +    | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
> +    | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
> +    ;
> +
> +InterruptLevel
> +    : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
> +    | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
> +    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
> +    ;
> +
> +InterruptTypeKeyword
> +    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
> +    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
> +    ;
> +
> +IODecodeKeyword
> +    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
> +    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
> +    ;
> +
> +IoRestrictionKeyword
> +    : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
> +    | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
> +    | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
> +    | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
> +    ;
> +
> +LockRuleKeyword
> +    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
> +    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
>     ;
>
>  MatchOpKeyword
> @@ -2206,22 +2358,16 @@ MatchOpKeyword
>     | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
>     ;
>
> -DMATypeKeyword
> -    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
> -    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
> -    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
> -    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
> -    ;
> -
> -XferTypeKeyword
> -    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
> -    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
> -    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
> +MaxKeyword
> +    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
> +    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
>     ;
>
> -ResourceTypeKeyword
> -    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> -    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
> +MemTypeKeyword
> +    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
> +    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
> +    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
> +    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
>     ;
>
>  MinKeyword
> @@ -2229,14 +2375,43 @@ MinKeyword
>     | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
>     ;
>
> -MaxKeyword
> -    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
> -    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
> +ObjectTypeKeyword
> +    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
> +    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
> +    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
> +    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
> +    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
> +    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
> +    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
> +    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
> +    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
> +    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
> +    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
> +    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
> +    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
> +    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
> +    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
> +    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
>     ;
>
> -DecodeKeyword
> -    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
> -    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
> +ParityTypeKeyword
> +    : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
> +    | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
> +    | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
> +    | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
> +    | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
> +    ;
> +
> +PinConfigByte
> +    : PinConfigKeyword                      {$$ = $1;}
> +    | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
> +    ;
> +
> +PinConfigKeyword
> +    : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
> +    | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
> +    | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
> +    | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
>     ;
>
>  RangeTypeKeyword
> @@ -2245,37 +2420,52 @@ RangeTypeKeyword
>     | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
>     ;
>
> -MemTypeKeyword
> -    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
> -    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
> -    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
> -    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
> -    ;
> -
> -OptionalReadWriteKeyword
> -    :                                       {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> -    | PARSEOP_READWRITETYPE_BOTH            {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> -    | PARSEOP_READWRITETYPE_READONLY        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
> +RegionSpaceKeyword
> +    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
> +    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
> +    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
> +    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
> +    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
> +    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
> +    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
> +    | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
> +    | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
> +    | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
> +    | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
>     ;
>
> -InterruptTypeKeyword
> -    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
> -    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
> +ResourceTypeKeyword
> +    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
>     ;
>
> -InterruptLevel
> -    : PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
> -    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
> +SerializeRuleKeyword
> +    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
> +    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
>     ;
>
>  ShareTypeKeyword
>     : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
>     | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
> +    | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
> +    | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
> +   ;
> +
> +SlaveModeKeyword
> +    : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
> +    | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
>     ;
>
> -IODecodeKeyword
> -    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
> -    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
> +StopBitsKeyword
> +    : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
> +    | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
> +    | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
> +    | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
> +    ;
> +
> +TranslationKeyword
> +    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
> +    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
>     ;
>
>  TypeKeyword
> @@ -2283,16 +2473,30 @@ TypeKeyword
>     | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
>     ;
>
> -TranslationKeyword
> -    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
> -    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
> +UpdateRuleKeyword
> +    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
> +    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
> +    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
>     ;
>
> -AddressKeyword
> -    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
> -    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
> -    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
> -    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
> +WireModeKeyword
> +    : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
> +    | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
> +    ;
> +
> +XferSizeKeyword
> +    : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
> +    | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
> +    | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
> +    | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
> +    | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
> +    | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
> +    ;
> +
> +XferTypeKeyword
> +    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
> +    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
> +    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
>     ;
>
>
> @@ -2363,6 +2567,16 @@ ConstTerm
>     | PARSEOP_REVISION              {$$ = TrCreateLeafNode (PARSEOP_REVISION);}
>     ;
>
> +ConstExprTerm
> +    : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
> +    | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
> +    | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
> +    | PARSEOP___DATE__              {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
> +    | PARSEOP___FILE__              {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
> +    | PARSEOP___LINE__              {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
> +    | PARSEOP___PATH__              {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);}
> +    ;
> +
>  ByteConstExpr
>     : Type3Opcode                   {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
>     | Type2IntegerOpcode            {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
> @@ -2391,15 +2605,6 @@ QWordConstExpr
>     | QWordConst                    {}
>     ;
>
> -ConstExprTerm
> -    : PARSEOP_ZERO                  {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
> -    | PARSEOP_ONE                   {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
> -    | PARSEOP_ONES                  {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);}
> -    | PARSEOP___DATE__              {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);}
> -    | PARSEOP___FILE__              {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);}
> -    | PARSEOP___LINE__              {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);}
> -    ;
> -
>  /* OptionalCount must appear before ByteList or an incorrect reduction will result */
>
>  OptionalCount
> @@ -2408,7 +2613,6 @@ OptionalCount
>     | ',' TermArg                   {$$ = $2;}
>     ;
>
> -
>  BufferTerm
>     : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
>         OptionalTermArg
> @@ -2431,6 +2635,15 @@ ByteList
>         ByteConstExpr               {$$ = TrLinkPeerNode ($1,$3);}
>     ;
>
> +DataBufferTerm
> +    : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
> +        OptionalWordConst
> +        ')' '{'
> +            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
> +    | PARSEOP_DATABUFFER '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
>  DWordList
>     :                               {$$ = NULL;}
>     | DWordConstExpr
> @@ -2448,11 +2661,6 @@ PackageTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> -VarPackageLengthTerm
> -    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
>  PackageList
>     :                               {$$ = NULL;}
>     | PackageElement
> @@ -2466,6 +2674,15 @@ PackageElement
>     | NameString                    {}
>     ;
>
> +VarPackageLengthTerm
> +    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
> +    | TermArg                       {$$ = $1;}
> +    ;
> +
> +
> +/******* Macros ***********************************************/
> +
> +
>  EISAIDTerm
>     : PARSEOP_EISAID '('
>         StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
> @@ -2473,6 +2690,14 @@ EISAIDTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> +UnicodeTerm
> +    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
> +        StringData
> +        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
> +    | PARSEOP_UNICODE '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
>
>  /******* Resources and Memory ***********************************************/
>
> @@ -2491,14 +2716,6 @@ ResourceTemplateTerm
>                                           TrCreateLeafNode (PARSEOP_ENDTAG));}
>     ;
>
> -UnicodeTerm
> -    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
> -        StringData
> -        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
> -    | PARSEOP_UNICODE '('
> -        error ')'                   {$$ = AslDoError(); yyclearin;}
> -    ;
> -
>  ResourceMacroList
>     :                               {$$ = NULL;}
>     | ResourceMacroList
> @@ -2514,7 +2731,11 @@ ResourceMacroTerm
>     | ExtendedIOTerm                {}
>     | ExtendedMemoryTerm            {}
>     | ExtendedSpaceTerm             {}
> +    | FixedDmaTerm                  {}
>     | FixedIOTerm                   {}
> +    | GpioIntTerm                   {}
> +    | GpioIoTerm                    {}
> +    | I2cSerialBusTerm              {}
>     | InterruptTerm                 {}
>     | IOTerm                        {}
>     | IRQNoFlagsTerm                {}
> @@ -2526,8 +2747,10 @@ ResourceMacroTerm
>     | QWordMemoryTerm               {}
>     | QWordSpaceTerm                {}
>     | RegisterTerm                  {}
> -    | StartDependentFnTerm          {}
> +    | SpiSerialBusTerm              {}
>     | StartDependentFnNoPriTerm     {}
> +    | StartDependentFnTerm          {}
> +    | UartSerialBusTerm             {}
>     | VendorLongTerm                {}
>     | VendorShortTerm               {}
>     | WordBusNumberTerm             {}
> @@ -2684,6 +2907,17 @@ ExtendedSpaceTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> +FixedDmaTerm
> +    : PARSEOP_FIXEDDMA '('          {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);}
> +        WordConstExpr               // 04: DMA RequestLines
> +        ',' WordConstExpr           // 06: DMA Channels
> +        OptionalXferSize            // 07: DMA TransferSize
> +        OptionalNameString          // 08: DescriptorName
> +        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$6,$7,$8);}
> +    | PARSEOP_FIXEDDMA '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
>  FixedIOTerm
>     : PARSEOP_FIXEDIO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FIXEDIO);}
>         WordConstExpr
> @@ -2694,6 +2928,58 @@ FixedIOTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> +GpioIntTerm
> +    : PARSEOP_GPIO_INT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_INT);}
> +        InterruptTypeKeyword        // 04: InterruptType
> +        ',' InterruptLevel          // 06: InterruptLevel
> +        OptionalShareType           // 07: SharedType
> +        ',' PinConfigByte           // 09: PinConfig
> +        OptionalWordConstExpr       // 10: DebounceTimeout
> +        ',' StringData              // 12: ResourceSource
> +        OptionalByteConstExpr       // 13: ResourceSourceIndex
> +        OptionalResourceType        // 14: ResourceType
> +        OptionalNameString          // 15: DescriptorName
> +        OptionalBuffer_Last         // 16: VendorData
> +        ')' '{'
> +            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
> +    | PARSEOP_GPIO_INT '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +GpioIoTerm
> +    : PARSEOP_GPIO_IO '('           {$<n>$ = TrCreateLeafNode (PARSEOP_GPIO_IO);}
> +        OptionalShareType_First     // 04: SharedType
> +        ',' PinConfigByte           // 06: PinConfig
> +        OptionalWordConstExpr       // 07: DebounceTimeout
> +        OptionalWordConstExpr       // 08: DriveStrength
> +        OptionalIoRestriction       // 09: IoRestriction
> +        ',' StringData              // 11: ResourceSource
> +        OptionalByteConstExpr       // 12: ResourceSourceIndex
> +        OptionalResourceType        // 13: ResourceType
> +        OptionalNameString          // 14: DescriptorName
> +        OptionalBuffer_Last         // 15: VendorData
> +        ')' '{'
> +            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
> +    | PARSEOP_GPIO_IO '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +I2cSerialBusTerm
> +    : PARSEOP_I2C_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);}
> +        WordConstExpr               // 04: SlaveAddress
> +        OptionalSlaveMode           // 05: SlaveMode
> +        ',' DWordConstExpr          // 07: ConnectionSpeed
> +        OptionalAddressingMode      // 08: AddressingMode
> +        ',' StringData              // 10: ResourceSource
> +        OptionalByteConstExpr       // 11: ResourceSourceIndex
> +        OptionalResourceType        // 12: ResourceType
> +        OptionalNameString          // 13: DescriptorName
> +        OptionalBuffer_Last         // 14: VendorData
> +        ')'                         {$$ = TrLinkChildren ($<n>3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);}
> +    | PARSEOP_I2C_SERIALBUS '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
>  InterruptTerm
>     : PARSEOP_INTERRUPT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INTERRUPT);}
>         OptionalResourceType_First
> @@ -2859,6 +3145,34 @@ RegisterTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> +SpiSerialBusTerm
> +    : PARSEOP_SPI_SERIALBUS '('     {$<n>$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);}
> +        WordConstExpr               // 04: DeviceSelection
> +        OptionalDevicePolarity      // 05: DevicePolarity
> +        OptionalWireMode            // 06: WireMode
> +        ',' ByteConstExpr           // 08: DataBitLength
> +        OptionalSlaveMode           // 09: SlaveMode
> +        ',' DWordConstExpr          // 11: ConnectionSpeed
> +        ',' ClockPolarityKeyword    // 13: ClockPolarity
> +        ',' ClockPhaseKeyword       // 15: ClockPhase
> +        ',' StringData              // 17: ResourceSource
> +        OptionalByteConstExpr       // 18: ResourceSourceIndex
> +        OptionalResourceType        // 19: ResourceType
> +        OptionalNameString          // 20: DescriptorName
> +        OptionalBuffer_Last         // 21: VendorData
> +        ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);}
> +    | PARSEOP_SPI_SERIALBUS '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
> +StartDependentFnNoPriTerm
> +    : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
> +        ')' '{'
> +        ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
> +    | PARSEOP_STARTDEPENDENTFN_NOPRI '('
> +        error ')'                   {$$ = AslDoError(); yyclearin;}
> +    ;
> +
>  StartDependentFnTerm
>     : PARSEOP_STARTDEPENDENTFN '('  {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);}
>         ByteConstExpr
> @@ -2869,11 +3183,24 @@ StartDependentFnTerm
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> -StartDependentFnNoPriTerm
> -    : PARSEOP_STARTDEPENDENTFN_NOPRI '('    {$<n>$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);}
> -        ')' '{'
> -        ResourceMacroList '}'       {$$ = TrLinkChildren ($<n>3,1,$6);}
> -    | PARSEOP_STARTDEPENDENTFN_NOPRI '('
> +UartSerialBusTerm
> +    : PARSEOP_UART_SERIALBUS '('    {$<n>$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);}
> +        DWordConstExpr              // 04: ConnectionSpeed
> +        OptionalBitsPerByte         // 05: BitsPerByte
> +        OptionalStopBits            // 06: StopBits
> +        ',' ByteConstExpr           // 08: LinesInUse
> +        OptionalEndian              // 09: Endianess
> +        OptionalParityType          // 10: Parity
> +        OptionalFlowControl         // 11: FlowControl
> +        ',' WordConstExpr           // 13: Rx BufferSize
> +        ',' WordConstExpr           // 15: Tx BufferSize
> +        ',' StringData              // 17: ResourceSource
> +        OptionalByteConstExpr       // 18: ResourceSourceIndex
> +        OptionalResourceType        // 19: ResourceType
> +        OptionalNameString          // 20: DescriptorName
> +        OptionalBuffer_Last         // 21: VendorData
> +        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);}
> +    | PARSEOP_UART_SERIALBUS '('
>         error ')'                   {$$ = AslDoError(); yyclearin;}
>     ;
>
> @@ -2982,6 +3309,16 @@ AmlPackageLengthTerm
>     : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
>     ;
>
> +NameStringItem
> +    : ',' NameString                {$$ = $2;}
> +    | ',' error                     {$$ = AslDoError (); yyclearin;}
> +    ;
> +
> +TermArgItem
> +    : ',' TermArg                   {$$ = $2;}
> +    | ',' error                     {$$ = AslDoError (); yyclearin;}
> +    ;
> +
>  OptionalBusMasterKeyword
>     : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
>     | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
> @@ -3001,12 +3338,28 @@ OptionalAccessSize
>     | ',' ByteConstExpr             {$$ = $2;}
>     ;
>
> +OptionalAddressingMode
> +    : ','                           {$$ = NULL;}
> +    | ',' AddressingModeKeyword     {$$ = $2;}
> +    ;
> +
>  OptionalAddressRange
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
>     | ',' AddressKeyword            {$$ = $2;}
>     ;
>
> +OptionalBitsPerByte
> +    : ','                           {$$ = NULL;}
> +    | ',' BitsPerByteKeyword        {$$ = $2;}
> +    ;
> +
> +OptionalBuffer_Last
> +    :                               {$$ = NULL;}
> +    | ','                           {$$ = NULL;}
> +    | ',' DataBufferTerm            {$$ = $2;}
> +    ;
> +
>  OptionalByteConstExpr
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
> @@ -3018,12 +3371,32 @@ OptionalDecodeType
>     | ',' DecodeKeyword             {$$ = $2;}
>     ;
>
> +OptionalDevicePolarity
> +    : ','                           {$$ = NULL;}
> +    | ',' DevicePolarityKeyword     {$$ = $2;}
> +    ;
> +
>  OptionalDWordConstExpr
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
>     | ',' DWordConstExpr            {$$ = $2;}
>     ;
>
> +OptionalEndian
> +    : ','                           {$$ = NULL;}
> +    | ',' EndianKeyword             {$$ = $2;}
> +    ;
> +
> +OptionalFlowControl
> +    : ','                           {$$ = NULL;}
> +    | ',' FlowControlKeyword        {$$ = $2;}
> +    ;
> +
> +OptionalIoRestriction
> +    : ','                           {$$ = NULL;}
> +    | ',' IoRestrictionKeyword      {$$ = $2;}
> +    ;
> +
>  OptionalListString
>     :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
>     | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
> @@ -3067,6 +3440,11 @@ OptionalObjectTypeKeyword
>     | ',' ObjectTypeKeyword         {$$ = $2;}
>     ;
>
> +OptionalParityType
> +    : ','                           {$$ = NULL;}
> +    | ',' ParityTypeKeyword         {$$ = $2;}
> +    ;
> +
>  OptionalQWordConstExpr
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
> @@ -3078,6 +3456,12 @@ OptionalRangeType
>     | ',' RangeTypeKeyword          {$$ = $2;}
>     ;
>
> +OptionalReadWriteKeyword
> +    :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> +    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
> +    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
> +    ;
> +
>  OptionalReference
>     :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
>     | ','                           {$$ = TrCreateLeafNode (PARSEOP_ZERO);}       /* Placeholder is a ZeroOp object */
> @@ -3085,27 +3469,48 @@ OptionalReference
>     ;
>
>  OptionalResourceType_First
> -    :                               {$$ = NULL;}
> +    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
>     | ResourceTypeKeyword           {$$ = $1;}
>     ;
>
>  OptionalResourceType
> -    : ','                           {$$ = NULL;}
> +    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
> +    | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
>     | ',' ResourceTypeKeyword       {$$ = $2;}
>     ;
>
> +OptionalReturnArg
> +    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
> +    | TermArg                       {$$ = $1;}
> +    ;
> +
>  OptionalSerializeRuleKeyword
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
>     | ',' SerializeRuleKeyword      {$$ = $2;}
>     ;
>
> +OptionalSlaveMode
> +    : ','                           {$$ = NULL;}
> +    | ',' SlaveModeKeyword          {$$ = $2;}
> +    ;
> +
>  OptionalShareType
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
>     | ',' ShareTypeKeyword          {$$ = $2;}
>     ;
>
> +OptionalShareType_First
> +    :                               {$$ = NULL;}
> +    | ShareTypeKeyword              {$$ = $1;}
> +    ;
> +
> +OptionalStopBits
> +    : ','                           {$$ = NULL;}
> +    | ',' StopBitsKeyword           {$$ = $2;}
> +    ;
> +
>  OptionalStringData
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
> @@ -3117,11 +3522,6 @@ OptionalTermArg
>     | TermArg                       {$$ = $1;}
>     ;
>
> -OptionalReturnArg
> -    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
> -    | TermArg                       {$$ = $1;}
> -    ;
> -
>  OptionalType
>     :                               {$$ = NULL;}
>     | ','                           {$$ = NULL;}
> @@ -3140,23 +3540,33 @@ OptionalTranslationType_Last
>     | ',' TranslationKeyword        {$$ = $2;}
>     ;
>
> -
> -TermArgItem
> -    : ',' TermArg                   {$$ = $2;}
> -    | ',' error                     {$$ = AslDoError (); yyclearin;}
> +OptionalWireMode
> +    : ','                           {$$ = NULL;}
> +    | ',' WireModeKeyword           {$$ = $2;}
>     ;
>
> -NameStringItem
> -    : ',' NameString                {$$ = $2;}
> -    | ',' error                     {$$ = AslDoError (); yyclearin;}
> +OptionalWordConst
> +    :                               {$$ = NULL;}
> +    | WordConst                     {$$ = $1;}
>     ;
>
> -%%
> +OptionalWordConstExpr
> +    : ','                           {$$ = NULL;}
> +    | ',' WordConstExpr             {$$ = $2;}
> +    ;
>
> +OptionalXferSize
> +    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> +    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
> +    | ',' XferSizeKeyword           {$$ = $2;}
> +    ;
>
> -/*
> +%%
> +/******************************************************************************
> + *
>  * Local support functions
> - */
> + *
> + *****************************************************************************/
>
>  int
>  AslCompilerwrap(void)
> diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
> index b09beab..146ab6d 100644
> --- a/src/acpica/source/compiler/asldefine.h
> +++ b/src/acpica/source/compiler/asldefine.h
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -128,7 +128,7 @@
>  #define ASL_INVOCATION_NAME         "iasl"
>  #define ASL_CREATOR_ID              "INTL"
>
> -#define ASL_COMPLIANCE              "Supports ACPI Specification Revision 4.0a"
> +#define ASL_COMPLIANCE              "Supports ACPI Specification Revision 5.0"
>
>
>  /* Configuration constants */
> @@ -225,5 +225,25 @@
>  #define POSITIVE                    0
>
>
> +/* Helper macros for resource tag creation */
> +
> +#define RsCreateMultiBitField \
> +    RsCreateResourceField
> +
> +#define RsCreateBitField(Op, Name, ByteOffset, BitOffset) \
> +    RsCreateResourceField (Op, Name, ByteOffset, BitOffset, 1)
> +
> +#define RsCreateByteField(Op, Name, ByteOffset) \
> +    RsCreateResourceField (Op, Name, ByteOffset, 0, 8);
> +
> +#define RsCreateWordField(Op, Name, ByteOffset) \
> +    RsCreateResourceField (Op, Name, ByteOffset, 0, 16);
> +
> +#define RsCreateDwordField(Op, Name, ByteOffset) \
> +    RsCreateResourceField (Op, Name, ByteOffset, 0, 32);
> +
> +#define RsCreateQwordField(Op, Name, ByteOffset) \
> +    RsCreateResourceField (Op, Name, ByteOffset, 0, 64);
> +
>  #endif /* ASLDEFINE.H */
>
> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
> index 82dc85a..c93a1a2 100644
> --- a/src/acpica/source/compiler/aslerror.c
> +++ b/src/acpica/source/compiler/aslerror.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -127,6 +127,18 @@ AeAddToErrorLog (
>     ASL_ERROR_MSG           *Enode);
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION:    AeClearErrorLog
> + *
> + * PARAMETERS:  None
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Empty the error list
> + *
> + ******************************************************************************/
> +
>  void
>  AeClearErrorLog (
>     void)
> @@ -240,7 +252,7 @@ AePrintException (
>     UINT32                  SourceColumn;
>     UINT32                  ErrorColumn;
>     FILE                    *OutputFile;
> -    FILE                    *SourceFile;
> +    FILE                    *SourceFile = NULL;
>     long                    FileSize;
>     BOOLEAN                 PrematureEOF = FALSE;
>
> @@ -283,24 +295,28 @@ AePrintException (
>
>     OutputFile = Gbl_Files[FileId].Handle;
>
> -    /* Use the merged header/source file if present, otherwise use input file */
>
> -    SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
> -    if (!SourceFile)
> +    if (!Enode->SourceLine)
>     {
> -        SourceFile = Gbl_Files[ASL_FILE_INPUT].Handle;
> -    }
> +        /* Use the merged header/source file if present, otherwise use input file */
>
> -    if (SourceFile)
> -    {
> -        /* Determine if the error occurred at source file EOF */
> -
> -        fseek (SourceFile, 0, SEEK_END);
> -        FileSize = ftell (SourceFile);
> +        SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
> +        if (!SourceFile)
> +        {
> +            SourceFile = Gbl_Files[ASL_FILE_INPUT].Handle;
> +        }
>
> -        if ((long) Enode->LogicalByteOffset >= FileSize)
> +        if (SourceFile)
>         {
> -            PrematureEOF = TRUE;
> +            /* Determine if the error occurred at source file EOF */
> +
> +            fseek (SourceFile, 0, SEEK_END);
> +            FileSize = ftell (SourceFile);
> +
> +            if ((long) Enode->LogicalByteOffset >= FileSize)
> +            {
> +                PrematureEOF = TRUE;
> +            }
>         }
>     }
>
> @@ -315,50 +331,58 @@ AePrintException (
>     {
>         if (Gbl_VerboseErrors)
>         {
> -            fprintf (OutputFile, "%6s", Enode->Filename);
> +            fprintf (OutputFile, "%-8s", Enode->Filename);
>
>             if (Enode->LineNumber)
>             {
> -                fprintf (OutputFile, " %6u: ", Enode->LineNumber);
> -
> -                /*
> -                 * If not at EOF, get the corresponding source code line and
> -                 * display it. Don't attempt this if we have a premature EOF
> -                 * condition.
> -                 */
> -                if (!PrematureEOF)
> +                if (Enode->SourceLine)
> +                {
> +                    fprintf (OutputFile, " %6u: %s",
> +                        Enode->LineNumber, Enode->SourceLine);
> +                }
> +                else
>                 {
> +                    fprintf (OutputFile, " %6u: ", Enode->LineNumber);
> +
>                     /*
> -                     * Seek to the offset in the combined source file, read
> -                     * the source line, and write it to the output.
> +                     * If not at EOF, get the corresponding source code line and
> +                     * display it. Don't attempt this if we have a premature EOF
> +                     * condition.
>                      */
> -                    Actual = fseek (SourceFile, (long) Enode->LogicalByteOffset,
> -                                (int) SEEK_SET);
> -                    if (Actual)
> -                    {
> -                        fprintf (OutputFile,
> -                            "[*** iASL: Seek error on source code temp file %s ***]",
> -                            Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
> -                    }
> -                    else
> +                    if (!PrematureEOF)
>                     {
> -                        RActual = fread (&SourceByte, 1, 1, SourceFile);
> -                        if (!RActual)
> +                        /*
> +                         * Seek to the offset in the combined source file, read
> +                         * the source line, and write it to the output.
> +                         */
> +                        Actual = fseek (SourceFile, (long) Enode->LogicalByteOffset,
> +                                    (int) SEEK_SET);
> +                        if (Actual)
>                         {
>                             fprintf (OutputFile,
> -                                "[*** iASL: Read error on source code temp file %s ***]",
> +                                "[*** iASL: Seek error on source code temp file %s ***]",
>                                 Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
>                         }
> -
> -                        else while (RActual && SourceByte && (SourceByte != '\n'))
> +                        else
>                         {
> -                            fwrite (&SourceByte, 1, 1, OutputFile);
>                             RActual = fread (&SourceByte, 1, 1, SourceFile);
> +                            if (!RActual)
> +                            {
> +                                fprintf (OutputFile,
> +                                    "[*** iASL: Read error on source code temp file %s ***]",
> +                                    Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
> +                            }
> +
> +                            else while (RActual && SourceByte && (SourceByte != '\n'))
> +                            {
> +                                fwrite (&SourceByte, 1, 1, OutputFile);
> +                                RActual = fread (&SourceByte, 1, 1, SourceFile);
> +                            }
>                         }
>                     }
> -                }
>
> -                fprintf (OutputFile, "\n");
> +                    fprintf (OutputFile, "\n");
> +                }
>             }
>         }
>         else
> @@ -367,7 +391,8 @@ AePrintException (
>
>             if (Enode->LineNumber)
>             {
> -                fprintf (OutputFile, "(%u) : ", Enode->LineNumber);
> +                fprintf (OutputFile, "(%u) i:%6u : ",
> +                    Enode->LineNumber, Enode->LineNumber);
>             }
>         }
>     }
> @@ -391,10 +416,23 @@ AePrintException (
>
>         if (Enode->LineNumber)
>         {
> +            /* Main message: try to use string from AslMessages first */
> +
> +            if (!MainMessage)
> +            {
> +                MainMessage = "";
> +            }
> +
>             MsgLength = strlen (MainMessage);
>             if (MsgLength == 0)
>             {
> +                /* Use the secondary/extra message as main message */
> +
>                 MainMessage = Enode->Message;
> +                if (!MainMessage)
> +                {
> +                    MainMessage = "";
> +                }
>
>                 MsgLength = strlen (MainMessage);
>                 ExtraMessage = NULL;
> @@ -480,6 +518,91 @@ AePrintErrorLog (
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    AslCommonError2
> + *
> + * PARAMETERS:  Level               - Seriousness (Warning/error, etc.)
> + *              MessageId           - Index into global message buffer
> + *              LineNumber          - Actual file line number
> + *              Column              - Column in current line
> + *              SourceLine          - Actual source code line
> + *              Filename            - source filename
> + *              ExtraMessage        - additional error message
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Create a new error node and add it to the error log
> + *
> + ******************************************************************************/
> +
> +void
> +AslCommonError2 (
> +    UINT8                   Level,
> +    UINT8                   MessageId,
> +    UINT32                  LineNumber,
> +    UINT32                  Column,
> +    char                    *SourceLine,
> +    char                    *Filename,
> +    char                    *ExtraMessage)
> +{
> +    char                    *MessageBuffer = NULL;
> +    char                    *LineBuffer;
> +    ASL_ERROR_MSG           *Enode;
> +
> +
> +    Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG));
> +
> +    if (ExtraMessage)
> +    {
> +        /* Allocate a buffer for the message and a new error node */
> +
> +        MessageBuffer = UtLocalCalloc (strlen (ExtraMessage) + 1);
> +
> +        /* Keep a copy of the extra message */
> +
> +        ACPI_STRCPY (MessageBuffer, ExtraMessage);
> +    }
> +
> +    LineBuffer = UtLocalCalloc (strlen (SourceLine) + 1);
> +    ACPI_STRCPY (LineBuffer, SourceLine);
> +
> +    /* Initialize the error node */
> +
> +    if (Filename)
> +    {
> +        Enode->Filename       = Filename;
> +        Enode->FilenameLength = strlen (Filename);
> +        if (Enode->FilenameLength < 6)
> +        {
> +            Enode->FilenameLength = 6;
> +        }
> +    }
> +
> +    Enode->MessageId            = MessageId;
> +    Enode->Level                = Level;
> +    Enode->LineNumber           = LineNumber;
> +    Enode->LogicalLineNumber    = LineNumber;
> +    Enode->LogicalByteOffset    = 0;
> +    Enode->Column               = Column;
> +    Enode->Message              = MessageBuffer;
> +    Enode->SourceLine           = LineBuffer;
> +
> +    /* Add the new node to the error node list */
> +
> +    AeAddToErrorLog (Enode);
> +
> +    if (Gbl_DebugFlag)
> +    {
> +        /* stderr is a file, send error to it immediately */
> +
> +        AePrintException (ASL_FILE_STDERR, Enode, NULL);
> +    }
> +
> +    Gbl_ExceptionCount[Level]++;
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    AslCommonError
>  *
>  * PARAMETERS:  Level               - Seriousness (Warning/error, etc.)
> @@ -546,6 +669,7 @@ AslCommonError (
>     Enode->LogicalByteOffset    = LogicalByteOffset;
>     Enode->Column               = Column;
>     Enode->Message              = MessageBuffer;
> +    Enode->SourceLine           = NULL;
>
>     /* Add the new node to the error node list */
>
> @@ -612,7 +736,6 @@ AslError (
>         break;
>     }
>
> -
>     if (Op)
>     {
>         AslCommonError (Level, MessageId, Op->Asl.LineNumber,
> @@ -702,5 +825,3 @@ AslCompilererror (
>
>     return 0;
>  }
> -
> -
> diff --git a/src/acpica/source/compiler/aslfiles.c b/src/acpica/source/compiler/aslfiles.c
> index 8a1fcd0..ef10668 100644
> --- a/src/acpica/source/compiler/aslfiles.c
> +++ b/src/acpica/source/compiler/aslfiles.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -122,7 +122,7 @@
>
>  /* Local prototypes */
>
> -static FILE *
> +FILE *
>  FlOpenIncludeWithPrefix (
>     char                    *PrefixDir,
>     char                    *Filename);
> @@ -153,12 +153,12 @@ AslAbort (
>     void)
>  {
>
> -    AePrintErrorLog (ASL_FILE_STDOUT);
> +    AePrintErrorLog (ASL_FILE_STDERR);
>     if (Gbl_DebugFlag)
>     {
> -        /* Print error summary to the debug file */
> +        /* Print error summary to stdout also */
>
> -        AePrintErrorLog (ASL_FILE_STDERR);
> +        AePrintErrorLog (ASL_FILE_STDOUT);
>     }
>
>     exit (1);
> @@ -246,14 +246,18 @@ FlGetFileSize (
>  {
>     FILE                    *fp;
>     UINT32                  FileSize;
> +    long                    Offset;
>
>
>     fp = Gbl_Files[FileId].Handle;
> +    Offset = ftell (fp);
>
>     fseek (fp, 0, SEEK_END);
>     FileSize = (UINT32) ftell (fp);
> -    fseek (fp, 0, SEEK_SET);
>
> +    /* Restore file pointer */
> +
> +    fseek (fp, Offset, SEEK_SET);
>     return (FileSize);
>  }
>
> @@ -431,14 +435,13 @@ FlCloseFile (
>     }
>
>     Error = fclose (Gbl_Files[FileId].Handle);
> -    Gbl_Files[FileId].Handle = NULL;
> -
>     if (Error)
>     {
>         FlFileError (FileId, ASL_MSG_CLOSE);
>         AslAbort ();
>     }
>
> +    Gbl_Files[FileId].Handle = NULL;
>     return;
>  }
>
> @@ -457,11 +460,38 @@ FlCloseFile (
>
>  void
>  FlSetLineNumber (
> -    ACPI_PARSE_OBJECT       *Op)
> +    UINT32                  LineNumber)
>  {
>
> -    Gbl_CurrentLineNumber = (UINT32) Op->Asl.Value.Integer;
> -    Gbl_LogicalLineNumber = (UINT32) Op->Asl.Value.Integer;
> +    DbgPrint (ASL_PARSE_OUTPUT, "\n#line: New line number %u (old %u)\n",
> +         LineNumber, Gbl_LogicalLineNumber);
> +
> +    Gbl_CurrentLineNumber = LineNumber;
> +    Gbl_LogicalLineNumber = LineNumber;
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    FlSetFilename
> + *
> + * PARAMETERS:  Op        - Parse node for the LINE asl statement
> + *
> + * RETURN:      None.
> + *
> + * DESCRIPTION: Set the current filename
> + *
> + ******************************************************************************/
> +
> +void
> +FlSetFilename (
> +    char                    *Filename)
> +{
> +
> +    DbgPrint (ASL_PARSE_OUTPUT, "\n#line: New filename %s (old %s)\n",
> +         Filename, Gbl_Files[ASL_FILE_INPUT].Filename);
> +
> +    Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
>  }
>
>
> @@ -546,7 +576,7 @@ FlAddIncludeDirectory (
>  *
>  ******************************************************************************/
>
> -static FILE *
> +FILE *
>  FlOpenIncludeWithPrefix (
>     char                    *PrefixDir,
>     char                    *Filename)
> @@ -617,7 +647,7 @@ FlOpenIncludeFile (
>      * Flush out the "include ()" statement on this line, start
>      * the actual include file on the next line
>      */
> -    ResetCurrentLineBuffer ();
> +    AslResetCurrentLineBuffer ();
>     FlPrintFile (ASL_FILE_SOURCE_OUTPUT, "\n");
>     Gbl_CurrentLineOffset++;
>
> @@ -808,6 +838,13 @@ FlOpenMiscOutputFiles (
>         Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =
>             freopen (Filename, "w+t", stderr);
>
> +        if (!Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle)
> +        {
> +            AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME,
> +                0, 0, 0, 0, NULL, NULL);
> +            return (AE_ERROR);
> +        }
> +
>         AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
>         AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);
>     }
> @@ -832,12 +869,29 @@ FlOpenMiscOutputFiles (
>         AslCompilerFileHeader (ASL_FILE_LISTING_OUTPUT);
>     }
>
> +    /* Create the preprocessor output file if preprocessor enabled */
> +
> +    if (Gbl_PreprocessFlag)
> +    {
> +        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_PREPROCESSOR);
> +        if (!Filename)
> +        {
> +            AslCommonError (ASL_ERROR, ASL_MSG_PREPROCESSOR_FILENAME,
> +                0, 0, 0, 0, NULL, NULL);
> +            return (AE_ERROR);
> +        }
> +
> +        FlOpenFile (ASL_FILE_PREPROCESSOR, Filename, "w+b");
> +    }
> +
> +    /* All done for data table compiler */
> +
>     if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
>     {
>         return (AE_OK);
>     }
>
> -    /* Create/Open a combined source output file */
> +   /* Create/Open a combined source output file */
>
>     Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_SOURCE);
>     if (!Filename)
> @@ -854,6 +908,10 @@ FlOpenMiscOutputFiles (
>      */
>     FlOpenFile (ASL_FILE_SOURCE_OUTPUT, Filename, "w+b");
>
> +/*
> +// TBD: TEMP
> +//    AslCompilerin = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle;
> +*/
>     /* Create/Open a assembly code source output file if asked */
>
>     if (Gbl_AsmOutputFlag)
> diff --git a/src/acpica/source/compiler/aslfold.c b/src/acpica/source/compiler/aslfold.c
> index d31c173..dffcc57 100644
> --- a/src/acpica/source/compiler/aslfold.c
> +++ b/src/acpica/source/compiler/aslfold.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index f36e46a..5207f3b 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -10,7 +10,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -142,10 +142,11 @@ extern int                          yydebug;
>  extern FILE                         *AslCompilerin;
>  extern int                          AslCompilerdebug;
>  extern int                          DtParserdebug;
> +extern int                          PrParserdebug;
>  extern const ASL_MAPPING_ENTRY      AslKeywordMapping[];
>  extern char                         *AslCompilertext;
>
> -#define ASL_LINE_BUFFER_SIZE        1024
> +#define ASL_LINE_BUFFER_SIZE        (4096 * 4) /* 16K */
>  #define ASL_MSG_BUFFER_SIZE         4096
>  #define HEX_TABLE_LINE_SIZE         8
>  #define HEX_LISTING_LINE_SIZE       8
> @@ -155,27 +156,29 @@ extern char                         *AslCompilertext;
>
>  ASL_EXTERN char                     Gbl_CurrentLineBuffer[ASL_LINE_BUFFER_SIZE];
>  ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_CurrentColumn, 0);
> +ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_PreviousLineNumber, 0);
>  ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_CurrentLineNumber, 1);
>  ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_LogicalLineNumber, 1);
>  ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_CurrentLineOffset, 0);
>  ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_LineBufPtr, Gbl_CurrentLineBuffer);
>
> -
>  /* Exception reporting */
>
>  ASL_EXTERN ASL_ERROR_MSG            ASL_INIT_GLOBAL (*Gbl_ErrorLog,NULL);
>  ASL_EXTERN ASL_ERROR_MSG            ASL_INIT_GLOBAL (*Gbl_NextError,NULL);
>
> -
>  /* Option flags */
>
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoCompile, TRUE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoSignon, TRUE);
> +ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_PreprocessOnly, FALSE);
> +ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_PreprocessFlag, TRUE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisassembleAll, FALSE);
>
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_Acpi2, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename, TRUE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NsOutputFlag, FALSE);
> +ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_PreprocessorOutputFlag, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DebugFlag, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_AsmOutputFlag, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_C_OutputFlag, FALSE);
> @@ -189,6 +192,7 @@ ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_CompileTimesFlag, FALSE
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_FoldConstants, TRUE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_VerboseErrors, TRUE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NoErrors, FALSE);
> +ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_WarningsAsErrors, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NoResourceChecking, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_GetAllTables, FALSE);
> @@ -200,6 +204,7 @@ ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (Gbl_WarningLevel, ASL_WARNI
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_UseOriginalCompilerId, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE);
>  ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE);
> +ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_CompileGeneric, FALSE);
>
>
>  #define HEX_OUTPUT_NONE         0
> @@ -274,7 +279,7 @@ extern char                         AslHexLookup[];
>
>  /* Event timing */
>
> -#define ASL_NUM_EVENTS              19
> +#define ASL_NUM_EVENTS              20
>  ASL_EXTERN ASL_EVENT_INFO           AslGbl_Events[ASL_NUM_EVENTS];
>  ASL_EXTERN UINT8                    AslGbl_NextEvent;
>  ASL_EXTERN UINT8                    AslGbl_NamespaceEvent;
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index c330626..7b13669 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/asllisting.c b/src/acpica/source/compiler/asllisting.c
> index f46e2cd..7cb00d1 100644
> --- a/src/acpica/source/compiler/asllisting.c
> +++ b/src/acpica/source/compiler/asllisting.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -922,9 +922,9 @@ LsFinishSourceListing (
>
>         FlPrintFile (FileId, "\n\nSummary of errors and warnings\n\n");
>         AePrintErrorLog (FileId);
> -        FlPrintFile (FileId, "\n\n");
> +        FlPrintFile (FileId, "\n");
>         UtDisplaySummary (FileId);
> -        FlPrintFile (FileId, "\n\n");
> +        FlPrintFile (FileId, "\n");
>     }
>  }
>
> @@ -1381,6 +1381,7 @@ LsDoHexOutputC (
>     /* Get AML size, seek back to start */
>
>     AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
> +    FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
>
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n");
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
> @@ -1437,7 +1438,6 @@ LsDoHexOutputC (
>     }
>
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n");
> -    FlCloseFile (ASL_FILE_HEX_OUTPUT);
>  }
>
>
> @@ -1469,6 +1469,7 @@ LsDoHexOutputAsl (
>     /* Get AML size, seek back to start */
>
>     AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
> +    FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
>
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, " * ASL source code output\n");
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
> @@ -1525,7 +1526,6 @@ LsDoHexOutputAsl (
>     }
>
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, "    })\n");
> -    FlCloseFile (ASL_FILE_HEX_OUTPUT);
>  }
>
>
> @@ -1557,6 +1557,7 @@ LsDoHexOutputAsm (
>     /* Get AML size, seek back to start */
>
>     AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
> +    FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
>
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n");
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, "; AML code block contains 0x%X bytes\n;\n",
> @@ -1608,7 +1609,6 @@ LsDoHexOutputAsm (
>     }
>
>     FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n");
> -    FlCloseFile (ASL_FILE_HEX_OUTPUT);
>  }
>
>
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 4a8eefd..8bac44a 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -261,7 +261,7 @@ LdLoadFieldElements (
>         {
>         case AML_INT_RESERVEDFIELD_OP:
>         case AML_INT_ACCESSFIELD_OP:
> -
> +        case AML_INT_CONNECTION_OP:
>             break;
>
>         default:
> @@ -296,8 +296,10 @@ LdLoadFieldElements (
>             }
>             break;
>         }
> +
>         Child = Child->Asl.Next;
>     }
> +
>     return (AE_OK);
>  }
>
> @@ -362,7 +364,6 @@ LdLoadResourceElements (
>     InitializerOp = ASL_GET_CHILD_NODE (Op);
>     while (InitializerOp)
>     {
> -
>         if (InitializerOp->Asl.ExternalName)
>         {
>             Status = AcpiNsLookup (WalkState->ScopeInfo,
> @@ -377,20 +378,15 @@ LdLoadResourceElements (
>             }
>
>             /*
> -             * Store the field offset in the namespace node so it
> -             * can be used when the field is referenced
> +             * Store the field offset and length in the namespace node
> +             * so it can be used when the field is referenced
>              */
> -            Node->Value = (UINT32) InitializerOp->Asl.Value.Integer;
> +            Node->Value = InitializerOp->Asl.Value.Tag.BitOffset;
> +            Node->Length = InitializerOp->Asl.Value.Tag.BitLength;
>             InitializerOp->Asl.Node = Node;
>             Node->Op = InitializerOp;
> -
> -            /* Pass thru the field type (Bitfield or Bytefield) */
> -
> -            if (InitializerOp->Asl.CompileFlags & NODE_IS_BIT_OFFSET)
> -            {
> -                Node->Flags |= ANOBJ_IS_BIT_OFFSET;
> -            }
>         }
> +
>         InitializerOp = ASL_GET_PEER_NODE (InitializerOp);
>     }
>
> diff --git a/src/acpica/source/compiler/asllookup.c b/src/acpica/source/compiler/asllookup.c
> index 0f62b94..0d92c91 100644
> --- a/src/acpica/source/compiler/asllookup.c
> +++ b/src/acpica/source/compiler/asllookup.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -894,7 +894,10 @@ LkNamespaceLocateBegin (
>     ACPI_PARSE_OBJECT       *OwningOp;
>     ACPI_PARSE_OBJECT       *SpaceIdOp;
>     UINT32                  MinimumLength;
> -    UINT32                  Temp;
> +    UINT32                  Offset;
> +    UINT32                  FieldBitLength;
> +    UINT32                  TagBitLength;
> +    UINT8                   Message = 0;
>     const ACPI_OPCODE_INFO  *OpInfo;
>     UINT32                  Flags;
>
> @@ -1098,74 +1101,106 @@ LkNamespaceLocateBegin (
>     /* 2) Check for a reference to a resource descriptor */
>
>     if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) ||
> -             (Node->Type == ACPI_TYPE_LOCAL_RESOURCE))
> +        (Node->Type == ACPI_TYPE_LOCAL_RESOURCE))
>     {
>         /*
> -         * This was a reference to a field within a resource descriptor.  Extract
> -         * the associated field offset (either a bit or byte offset depending on
> -         * the field type) and change the named reference into an integer for
> -         * AML code generation
> +         * This was a reference to a field within a resource descriptor.
> +         * Extract the associated field offset (either a bit or byte
> +         * offset depending on the field type) and change the named
> +         * reference into an integer for AML code generation
>          */
> -        Temp = Node->Value;
> -        if (Node->Flags & ANOBJ_IS_BIT_OFFSET)
> -        {
> -            Op->Asl.CompileFlags |= NODE_IS_BIT_OFFSET;
> -        }
> -
> -        /* Perform BitOffset <--> ByteOffset conversion if necessary */
> +        Offset = Node->Value;
> +        TagBitLength = Node->Length;
>
> +        /*
> +         * If a field is being created, generate the length (in bits) of
> +         * the field. Note: Opcodes other than CreateXxxField and Index
> +         * can come through here. For other opcodes, we just need to
> +         * convert the resource tag reference to an integer offset.
> +         */
>         switch (Op->Asl.Parent->Asl.AmlOpcode)
>         {
> -        case AML_CREATE_FIELD_OP:
> +        case AML_CREATE_FIELD_OP: /* Variable "Length" field, in bits */
> +            /*
> +             * We know the length operand is an integer constant because
> +             * we know that it contains a reference to a resource
> +             * descriptor tag.
> +             */
> +            FieldBitLength = (UINT32) Op->Asl.Next->Asl.Value.Integer;
> +            break;
>
> -            /* We allow a Byte offset to Bit Offset conversion for this op */
> +        case AML_CREATE_BIT_FIELD_OP:
> +            FieldBitLength = 1;
> +            break;
>
> -            if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET))
> -            {
> -                /* Simply multiply byte offset times 8 to get bit offset */
> +        case AML_CREATE_BYTE_FIELD_OP:
> +        case AML_INDEX_OP:
> +            FieldBitLength = 8;
> +            break;
>
> -                Temp = ACPI_MUL_8 (Temp);
> -            }
> +        case AML_CREATE_WORD_FIELD_OP:
> +            FieldBitLength = 16;
>             break;
>
> +        case AML_CREATE_DWORD_FIELD_OP:
> +            FieldBitLength = 32;
> +            break;
>
> -        case AML_CREATE_BIT_FIELD_OP:
> +        case AML_CREATE_QWORD_FIELD_OP:
> +            FieldBitLength = 64;
> +            break;
> +
> +        default:
> +            FieldBitLength = 0;
> +            break;
> +        }
>
> -            /* This op requires a Bit Offset */
> +        /* Check the field length against the length of the resource tag */
>
> -            if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET))
> +        if (FieldBitLength)
> +        {
> +            if (TagBitLength < FieldBitLength)
>             {
> -                AslError (ASL_ERROR, ASL_MSG_BYTES_TO_BITS, Op, NULL);
> +                Message = ASL_MSG_TAG_SMALLER;
>             }
> -            break;
> +            else if (TagBitLength > FieldBitLength)
> +            {
> +                Message = ASL_MSG_TAG_LARGER;
> +            }
> +
> +            if (Message)
> +            {
> +                sprintf (MsgBuffer, "Tag: %u bit%s, Field: %u bit%s",
> +                    TagBitLength, (TagBitLength > 1) ? "s" : "",
> +                    FieldBitLength, (FieldBitLength > 1) ? "s" : "");
>
> +                AslError (ASL_WARNING, Message, Op, MsgBuffer);
> +            }
> +        }
>
> +        /* Convert the BitOffset to a ByteOffset for certain opcodes */
> +
> +        switch (Op->Asl.Parent->Asl.AmlOpcode)
> +        {
>         case AML_CREATE_BYTE_FIELD_OP:
>         case AML_CREATE_WORD_FIELD_OP:
>         case AML_CREATE_DWORD_FIELD_OP:
>         case AML_CREATE_QWORD_FIELD_OP:
>         case AML_INDEX_OP:
>
> -            /* These Ops require Byte offsets */
> -
> -            if (Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET)
> -            {
> -                AslError (ASL_ERROR, ASL_MSG_BITS_TO_BYTES, Op, NULL);
> -            }
> +            Offset = ACPI_DIV_8 (Offset);
>             break;
>
> -
>         default:
> -            /* Nothing to do for other opcodes */
>             break;
>         }
>
>         /* Now convert this node to an integer whose value is the field offset */
>
> -        Op->Asl.AmlLength       = 0;
> -        Op->Asl.ParseOpcode     = PARSEOP_INTEGER;
> -        Op->Asl.Value.Integer   = (UINT64) Temp;
> -        Op->Asl.CompileFlags   |= NODE_IS_RESOURCE_FIELD;
> +        Op->Asl.AmlLength = 0;
> +        Op->Asl.ParseOpcode = PARSEOP_INTEGER;
> +        Op->Asl.Value.Integer = (UINT64) Offset;
> +        Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
>
>         OpcGenerateAmlOpcode (Op);
>     }
> @@ -1325,6 +1360,7 @@ LkNamespaceLocateBegin (
>             {
>             case ACPI_ADR_SPACE_EC:
>             case ACPI_ADR_SPACE_CMOS:
> +            case ACPI_ADR_SPACE_GPIO:
>
>                 if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BYTE)
>                 {
> @@ -1334,6 +1370,7 @@ LkNamespaceLocateBegin (
>
>             case ACPI_ADR_SPACE_SMBUS:
>             case ACPI_ADR_SPACE_IPMI:
> +            case ACPI_ADR_SPACE_GSBUS:
>
>                 if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BUFFER)
>                 {
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 69e5c4a..285d765 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -168,7 +168,7 @@ AslDoResponseFile (
>
>
>  #define ASL_TOKEN_SEPARATORS    " \t\n"
> -#define ASL_SUPPORTED_OPTIONS   "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:T:v:w:x:z"
> +#define ASL_SUPPORTED_OPTIONS   "@:2b|c|d^D:e:fgh^i|I:l^mno|p:P^r:s|t|T:G^v|w|x:z"
>
>
>  /*******************************************************************************
> @@ -192,6 +192,12 @@ Options (
>     ACPI_OPTION ("-@ <file>",       "Specify command file");
>     ACPI_OPTION ("-I <dir>",        "Specify additional include directory");
>
> +    printf ("\nPreprocessor:\n");
> +    ACPI_OPTION ("-D <symbol>",     "Define symbol for preprocessor use");
> +    ACPI_OPTION ("-li",             "Create preprocessed output file (*.i)");
> +    ACPI_OPTION ("-P",              "Preprocess only and create preprocessor output file (*.i)");
> +    ACPI_OPTION ("-Pn",             "Disable preprocessor");
> +
>     printf ("\nGeneral Output:\n");
>     ACPI_OPTION ("-p <prefix>",     "Specify path/filename prefix for all output files");
>     ACPI_OPTION ("-va",             "Disable all errors and warnings (summary only)");
> @@ -199,12 +205,13 @@ Options (
>     ACPI_OPTION ("-vo",             "Enable optimization comments");
>     ACPI_OPTION ("-vr",             "Disable remarks");
>     ACPI_OPTION ("-vs",             "Disable signon");
> -    ACPI_OPTION ("-w <1|2|3>",      "Set warning reporting level");
> +    ACPI_OPTION ("-w1 -w2 -w3",     "Set warning reporting level");
> +    ACPI_OPTION ("-we",             "Report warnings as errors");
>
>     printf ("\nAML Output Files:\n");
> -    ACPI_OPTION ("-s <a|c>",        "Create AML in assembler or C source file (*.asm or *.c)");
> -    ACPI_OPTION ("-i <a|c>",        "Create assembler or C include file (*.inc or *.h)");
> -    ACPI_OPTION ("-t <a|c|s>",      "Create AML in assembler, C, or ASL hex table (*.hex)");
> +    ACPI_OPTION ("-sa -sc",         "Create AML in assembler or C source file (*.asm or *.c)");
> +    ACPI_OPTION ("-ia -ic",         "Create assembler or C include file (*.inc or *.h)");
> +    ACPI_OPTION ("-ta -tc -ts",     "Create AML in assembler, C, or ASL hex table (*.hex)");
>
>     printf ("\nAML Code Generation:\n");
>     ACPI_OPTION ("-oa",             "Disable all optimizations (compatibility mode)");
> @@ -220,6 +227,7 @@ Options (
>     ACPI_OPTION ("-ls",             "Create combined source file (expanded includes) (*.src)");
>
>     printf ("\nACPI Data Tables:\n");
> +    ACPI_OPTION ("-G",              "Compile custom table containing generic operators");
>     ACPI_OPTION ("-T <sig>|ALL|*",  "Create table template file(s) for <Sig>");
>     ACPI_OPTION ("-vt",             "Create verbose templates (full disassembly)");
>
> @@ -229,6 +237,7 @@ Options (
>     ACPI_OPTION ("-dc [file]",      "Disassemble AML and immediately compile it");
>     ACPI_OPTION ("",                "(Obtain DSDT from current system if no input file)");
>     ACPI_OPTION ("-e  [f1,f2]",     "Include ACPI table(s) for external symbol resolution");
> +    ACPI_OPTION ("-m",              "Do not translate Buffers to Resource Templates");
>     ACPI_OPTION ("-2",              "Emit ACPI 2.0 compatible ASL code");
>     ACPI_OPTION ("-g",              "Get ACPI tables and write to files (*.dat)");
>
> @@ -269,12 +278,12 @@ HelpMessage (
>     Options ();
>
>     printf ("\nCompiler/Disassembler Debug Options:\n");
> -    ACPI_OPTION ("-b<p|t|b>",       "Create compiler debug/trace file (*.txt)");
> +    ACPI_OPTION ("-bb -bp -bt",     "Create compiler debug/trace file (*.txt)");
>     ACPI_OPTION ("",                "Types: Parse/Tree/Both");
>     ACPI_OPTION ("-f",              "Ignore errors, force creation of AML output file(s)");
>     ACPI_OPTION ("-n",              "Parse only, no output generation");
>     ACPI_OPTION ("-ot",             "Display compile times");
> -    ACPI_OPTION ("-x<level>",       "Set debug level for trace output");
> +    ACPI_OPTION ("-x <level>",      "Set debug level for trace output");
>     ACPI_OPTION ("-z",              "Do not insert new compiler ID for DataTables");
>  }
>
> @@ -475,34 +484,34 @@ AslDoOptions (
>         if (IsResponseFile)
>         {
>             printf ("Nested command files are not supported\n");
> -            return -1;
> +            return (-1);
>         }
>
>         if (AslDoResponseFile (AcpiGbl_Optarg))
>         {
> -            return -1;
> +            return (-1);
>         }
>         break;
>
>
> -    case '2':
> -
> +    case '2':   /* ACPI 2.0 compatibility mode */
>         Gbl_Acpi2 = TRUE;
>         break;
>
>
> -    case 'b':
> -
> +    case 'b':   /* Debug output options */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case 'b':
>             AslCompilerdebug = 1; /* same as yydebug */
>             DtParserdebug = 1;
> +            PrParserdebug = 1;
>             break;
>
>         case 'p':
>             AslCompilerdebug = 1; /* same as yydebug */
>             DtParserdebug = 1;
> +            PrParserdebug = 1;
>             break;
>
>         case 't':
> @@ -533,7 +542,7 @@ AslDoOptions (
>         break;
>
>
> -    case 'd':
> +    case 'd':   /* Disassembler */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case '^':
> @@ -557,7 +566,12 @@ AslDoOptions (
>         break;
>
>
> -    case 'e':
> +    case 'D':   /* Define a symbol */
> +        PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
> +        break;
> +
> +
> +    case 'e':   /* External files for disassembler */
>         Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
>         if (ACPI_FAILURE (Status))
>         {
> @@ -567,17 +581,17 @@ AslDoOptions (
>         break;
>
>
> -    case 'f':
> -
> -        /* Ignore errors and force creation of aml file */
> -
> +    case 'f':   /* Ignore errors and force creation of aml file */
>         Gbl_IgnoreErrors = TRUE;
>         break;
>
>
> -    case 'g':
> +    case 'G':
> +        Gbl_CompileGeneric = TRUE;
> +        break;
> +
>
> -        /* Get all ACPI tables */
> +    case 'g':   /* Get all ACPI tables */
>
>         Gbl_GetAllTables = TRUE;
>         Gbl_DoCompile = FALSE;
> @@ -585,7 +599,6 @@ AslDoOptions (
>
>
>     case 'h':
> -
>         switch (AcpiGbl_Optarg[0])
>         {
>         case '^':
> @@ -612,14 +625,12 @@ AslDoOptions (
>         }
>
>
> -    case 'I': /* Add an include file search directory */
> -
> +    case 'I':   /* Add an include file search directory */
>         FlAddIncludeDirectory (AcpiGbl_Optarg);
>         break;
>
>
> -    case 'i':
> -
> +    case 'i':   /* Output AML as an include file */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case 'a':
> @@ -637,14 +648,13 @@ AslDoOptions (
>             break;
>
>         default:
> -            printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
> +            printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
>             return (-1);
>         }
>         break;
>
>
> -    case 'l':
> -
> +    case 'l':   /* Listing files */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case '^':
> @@ -653,6 +663,12 @@ AslDoOptions (
>             Gbl_ListingFlag = TRUE;
>             break;
>
> +        case 'i':
> +            /* Produce preprocessor output file */
> +
> +            Gbl_PreprocessorOutputFlag = TRUE;
> +            break;
> +
>         case 'n':
>             /* Produce namespace file */
>
> @@ -672,8 +688,17 @@ AslDoOptions (
>         break;
>
>
> -    case 'o':
> +    case 'm':   /* Do not convert buffers to resource descriptors */
> +        AcpiGbl_NoResourceDisassembly = TRUE;
> +        break;
> +
>
> +    case 'n':   /* Parse only */
> +        Gbl_ParseOnlyFlag = TRUE;
> +        break;
> +
> +
> +    case 'o':   /* Control compiler AML optimizations */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case 'a':
> @@ -720,30 +745,37 @@ AslDoOptions (
>         break;
>
>
> -    case 'n':
> +    case 'P':   /* Preprocessor options */
> +        switch (AcpiGbl_Optarg[0])
> +        {
> +        case '^':   /* Proprocess only, emit (.i) file */
> +            Gbl_PreprocessOnly = TRUE;
> +            Gbl_PreprocessorOutputFlag = TRUE;
> +            break;
>
> -        /* Parse only */
> +        case 'n':   /* Disable preprocessor */
> +            Gbl_PreprocessFlag = FALSE;
> +            break;
>
> -        Gbl_ParseOnlyFlag = TRUE;
> +        default:
> +            printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
> +            return (-1);
> +        }
>         break;
>
>
> -    case 'p':
> -
> -        /* Override default AML output filename */
> -
> +    case 'p':   /* Override default AML output filename */
>         Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
>         Gbl_UseDefaultAmlFilename = FALSE;
>         break;
>
>
> -    case 'r':
> +    case 'r':   /* Override revision found in table header */
>         Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
>         break;
>
>
> -    case 's':
> -
> +    case 's':   /* Create AML in a source code file */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case 'a':
> @@ -767,10 +799,7 @@ AslDoOptions (
>         break;
>
>
> -    case 't':
> -
> -        /* Produce hex table output file */
> -
> +    case 't':   /* Produce hex table output file */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case 'a':
> @@ -792,14 +821,13 @@ AslDoOptions (
>         break;
>
>
> -    case 'T':
> +    case 'T':   /* Create a ACPI table template file */
>         Gbl_DoTemplates = TRUE;
>         Gbl_TemplateSignature = AcpiGbl_Optarg;
>         break;
>
>
> -    case 'v':
> -
> +    case 'v':   /* Verbosity settings */
>         switch (AcpiGbl_Optarg[0])
>         {
>         case 'a':
> @@ -838,7 +866,6 @@ AslDoOptions (
>
>
>     case 'w': /* Set warning levels */
> -
>         switch (AcpiGbl_Optarg[0])
>         {
>         case '1':
> @@ -853,6 +880,10 @@ AslDoOptions (
>             Gbl_WarningLevel = ASL_WARNING3;
>             break;
>
> +        case 'e':
> +            Gbl_WarningsAsErrors = TRUE;
> +            break;
> +
>         default:
>             printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
>             return (-1);
> @@ -860,20 +891,17 @@ AslDoOptions (
>         break;
>
>
> -    case 'x':
> -
> +    case 'x':   /* Set debug print output level */
>         AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
>         break;
>
>
>     case 'z':
> -
>         Gbl_UseOriginalCompilerId = TRUE;
>         break;
>
>
>     default:
> -
>         return (-1);
>     }
>
> @@ -938,6 +966,10 @@ AslCommandLine (
>     if (Gbl_DoSignon)
>     {
>         printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
> +        if (Gbl_IgnoreErrors)
> +        {
> +            printf ("Ignoring all errors, forcing AML file generation\n\n");
> +        }
>     }
>
>     /* Abort if anything went wrong on the command line */
> @@ -986,6 +1018,7 @@ main (
>     /* Init and command line */
>
>     AslInitialize ();
> +    PrInitializePreprocessor ();
>     Index1 = Index2 = AslCommandLine (argc, argv);
>
>     /* Options that have no additional parameters or pathnames */
> diff --git a/src/acpica/source/compiler/aslmap.c b/src/acpica/source/compiler/aslmap.c
> index 6e2a7e8..498ca42 100644
> --- a/src/acpica/source/compiler/aslmap.c
> +++ b/src/acpica/source/compiler/aslmap.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -198,13 +198,16 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>
>
>  /* ACCESSAS */                  OP_TABLE_ENTRY (AML_INT_ACCESSFIELD_OP,     0,                              0,                  0),
> -/* ACCESSATTRIB_BLOCK */        OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_BLOCK,     0,                  0),
> -/* ACCESSATTRIB_BLOCK_CALL */   OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_BLOCK_CALL,0,                  0),
> -/* ACCESSATTRIB_BYTE */         OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_BYTE,      0,                  0),
> -/* ACCESSATTRIB_WORD_CALL */    OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_WORD_CALL, 0,                  0),
> -/* ACCESSATTRIB_QUICK */        OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_QUICK,     0,                  0),
> -/* ACCESSATTRIB_SND_RCV */      OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_SEND_RCV,  0,                  0),
> -/* ACCESSATTRIB_WORD */         OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SMB_WORD,      0,                  0),
> +/* ACCESSATTRIB_BLOCK */        OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_BLOCK,         0,                  0),
> +/* ACCESSATTRIB_BLOCK_CALL */   OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_BLOCK_CALL,    0,                  0),
> +/* ACCESSATTRIB_BYTE */         OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_BYTE,          0,                  0),
> +/* ACCESSATTRIB_MULTIBYTE */    OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_MULTIBYTE,     0,                  0),
> +/* ACCESSATTRIB_QUICK */        OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_QUICK,         0,                  0),
> +/* ACCESSATTRIB_RAW_BYTES */    OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_RAW_BYTES,     0,                  0),
> +/* ACCESSATTRIB_RAW_PROCESS */  OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_RAW_PROCESS,   0,                  0),
> +/* ACCESSATTRIB_SND_RCV */      OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_SEND_RCV,      0,                  0),
> +/* ACCESSATTRIB_WORD */         OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_WORD,          0,                  0),
> +/* ACCESSATTRIB_WORD_CALL */    OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ATTRIB_WORD_CALL,     0,                  0),
>  /* ACCESSTYPE_ANY */            OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ACCESS_ANY,           0,                  0),
>  /* ACCESSTYPE_BUF */            OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ACCESS_BUFFER,        0,                  0),
>  /* ACCESSTYPE_BYTE */           OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ACCESS_BYTE,          0,                  0),
> @@ -213,7 +216,8 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* ACCESSTYPE_WORD */           OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_ACCESS_WORD,          0,                  0),
>  /* ACQUIRE */                   OP_TABLE_ENTRY (AML_ACQUIRE_OP,             0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* ADD */                       OP_TABLE_ENTRY (AML_ADD_OP,                 0,                              0,                  ACPI_BTYPE_INTEGER),
> -/* ADDRESSSPACE_FFIXEDHW */     OP_TABLE_ENTRY (AML_BYTE_OP,                ACPI_ADR_SPACE_FIXED_HARDWARE,  0,                  0),
> +/* ADDRESSINGMODE_7BIT */       OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* ADDRESSINGMODE_10BIT */      OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* ADDRESSTYPE_ACPI */          OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
>  /* ADDRESSTYPE_MEMORY */        OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* ADDRESSTYPE_NVS */           OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
> @@ -228,6 +232,11 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* ARG5 */                      OP_TABLE_ENTRY (AML_ARG5,                   0,                              0,                  ACPI_BTYPE_OBJECTS_AND_REFS),
>  /* ARG6 */                      OP_TABLE_ENTRY (AML_ARG6,                   0,                              0,                  ACPI_BTYPE_OBJECTS_AND_REFS),
>  /* BANKFIELD */                 OP_TABLE_ENTRY (AML_BANK_FIELD_OP,          0,                              NODE_AML_PACKAGE,   0),
> +/* BITSPERBYTE_EIGHT */         OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
> +/* BITSPERBYTE_FIVE */          OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* BITSPERBYTE_NINE */          OP_TABLE_ENTRY (AML_BYTE_OP,                4,                              0,                  0),
> +/* BITSPERBYTE_SEVEN */         OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
> +/* BITSPERBYTE_SIX */           OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* BREAK */                     OP_TABLE_ENTRY (AML_BREAK_OP,               0,                              0,                  0),
>  /* BREAKPOINT */                OP_TABLE_ENTRY (AML_BREAK_POINT_OP,         0,                              0,                  0),
>  /* BUFFER */                    OP_TABLE_ENTRY (AML_BUFFER_OP,              0,                              NODE_AML_PACKAGE,   ACPI_BTYPE_BUFFER),
> @@ -235,9 +244,14 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* BUSMASTERTYPE_NOTMASTER */   OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* BYTECONST */                 OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* CASE */                      OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> +/* CLOCKPHASE_FIRST */          OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* CLOCKPHASE_SECOND */         OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* CLOCKPOLARITY_HIGH */        OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* CLOCKPOLARITY_LOW */         OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* CONCATENATE */               OP_TABLE_ENTRY (AML_CONCAT_OP,              0,                              0,                  ACPI_BTYPE_COMPUTE_DATA),
>  /* CONCATENATERESTEMPLATE */    OP_TABLE_ENTRY (AML_CONCAT_RES_OP,          0,                              0,                  ACPI_BTYPE_BUFFER),
>  /* CONDREFOF */                 OP_TABLE_ENTRY (AML_COND_REF_OF_OP,         0,                              0,                  ACPI_BTYPE_INTEGER),
> +/* CONNECTION */                OP_TABLE_ENTRY (AML_INT_CONNECTION_OP,      0,                              0,                  0),
>  /* CONTINUE */                  OP_TABLE_ENTRY (AML_CONTINUE_OP,            0,                              0,                  0),
>  /* COPY */                      OP_TABLE_ENTRY (AML_COPY_OP,                0,                              0,                  ACPI_BTYPE_DATA_REFERENCE),
>  /* CREATEBITFIELD */            OP_TABLE_ENTRY (AML_CREATE_BIT_FIELD_OP,    0,                              0,                  0),
> @@ -246,6 +260,7 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* CREATEFIELD */               OP_TABLE_ENTRY (AML_CREATE_FIELD_OP,        0,                              0,                  0),
>  /* CREATEQWORDFIELD */          OP_TABLE_ENTRY (AML_CREATE_QWORD_FIELD_OP,  0,                              0,                  0),
>  /* CREATEWORDFIELD */           OP_TABLE_ENTRY (AML_CREATE_WORD_FIELD_OP,   0,                              0,                  0),
> +/* DATABUFFER */                OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* DATATABLEREGION */           OP_TABLE_ENTRY (AML_DATA_REGION_OP,         0,                              0,                  0),
>  /* DEBUG */                     OP_TABLE_ENTRY (AML_DEBUG_OP,               0,                              0,                  ACPI_BTYPE_DEBUG_OBJECT),
>  /* DECODETYPE_POS */            OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> @@ -256,6 +271,8 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* DEFINITIONBLOCK */           OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* DEREFOF */                   OP_TABLE_ENTRY (AML_DEREF_OF_OP,            0,                              0,                  ACPI_BTYPE_DATA_REFERENCE | ACPI_BTYPE_STRING),
>  /* DEVICE */                    OP_TABLE_ENTRY (AML_DEVICE_OP,              0,                              NODE_AML_PACKAGE,   0),
> +/* DEVICEPOLARITY_HIGH */       OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* DEVICEPOLARITY_LOW */        OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* DIVIDE */                    OP_TABLE_ENTRY (AML_DIVIDE_OP,              0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* DMA */                       OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* DMATYPE_A */                 OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> @@ -270,6 +287,8 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* ELSE */                      OP_TABLE_ENTRY (AML_ELSE_OP,                0,                              NODE_AML_PACKAGE,   0),
>  /* ELSEIF */                    OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              NODE_AML_PACKAGE,   0),
>  /* ENDDEPENDENTFN */            OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> +/* ENDIAN_BIG */                OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* ENDIAN_LITTLE */             OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* ENDTAG */                    OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* ERRORNODE */                 OP_TABLE_ENTRY (AML_NOOP_OP,                0,                              0,                  0),
>  /* EVENT */                     OP_TABLE_ENTRY (AML_EVENT_OP,               0,                              0,                  0),
> @@ -281,18 +300,25 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* FIELD */                     OP_TABLE_ENTRY (AML_FIELD_OP,               0,                              NODE_AML_PACKAGE,   0),
>  /* FINDSETLEFTBIT */            OP_TABLE_ENTRY (AML_FIND_SET_LEFT_BIT_OP,   0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* FINDSETRIGHTBIT */           OP_TABLE_ENTRY (AML_FIND_SET_RIGHT_BIT_OP,  0,                              0,                  ACPI_BTYPE_INTEGER),
> +/* FIXEDDMA */                  OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* FIXEDIO */                   OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> +/* FLOWCONTROL_HW */            OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* FLOWCONTROL_NONE */          OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* FLOWCONTROL_SW */            OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
>  /* FROMBCD */                   OP_TABLE_ENTRY (AML_FROM_BCD_OP,            0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* FUNCTION */                  OP_TABLE_ENTRY (AML_METHOD_OP,              0,                              NODE_AML_PACKAGE,   0),
> +/* GPIOINT */                   OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> +/* GPIOIO */                    OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> +/* I2CSERIALBUS */              OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* IF */                        OP_TABLE_ENTRY (AML_IF_OP,                  0,                              NODE_AML_PACKAGE,   0),
>  /* INCLUDE */                   OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> -/* INCLUDE_CSTYLE */            OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* INCLUDE_END */               OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* INCREMENT */                 OP_TABLE_ENTRY (AML_INCREMENT_OP,           0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* INDEX */                     OP_TABLE_ENTRY (AML_INDEX_OP,               0,                              0,                  ACPI_BTYPE_REFERENCE),
>  /* INDEXFIELD */                OP_TABLE_ENTRY (AML_INDEX_FIELD_OP,         0,                              NODE_AML_PACKAGE,   0),
>  /* INTEGER */                   OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* INTERRUPT */                 OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
> +/* INTLEVEL_ACTIVEBOTH */       OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
>  /* INTLEVEL_ACTIVEHIGH */       OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* INTLEVEL_ACTIVELOW */        OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* INTTYPE_EDGE */              OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> @@ -300,13 +326,16 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* IO */                        OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* IODECODETYPE_10 */           OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* IODECODETYPE_16 */           OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* IORESTRICT_IN */             OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* IORESTRICT_NONE */           OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* IORESTRICT_OUT */            OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
> +/* IORESTRICT_PRESERVE */       OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
>  /* IRQ */                       OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* IRQNOFLAGS */                OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* LAND */                      OP_TABLE_ENTRY (AML_LAND_OP,                0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* LEQUAL */                    OP_TABLE_ENTRY (AML_LEQUAL_OP,              0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* LGREATER */                  OP_TABLE_ENTRY (AML_LGREATER_OP,            0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* LGREATEREQUAL */             OP_TABLE_ENTRY (AML_LGREATEREQUAL_OP,       0,                              0,                  ACPI_BTYPE_INTEGER),
> -/* LINE */                      OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* LLESS */                     OP_TABLE_ENTRY (AML_LLESS_OP,               0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* LLESSEQUAL */                OP_TABLE_ENTRY (AML_LLESSEQUAL_OP,          0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* LNOT */                      OP_TABLE_ENTRY (AML_LNOT_OP,                0,                              0,                  ACPI_BTYPE_INTEGER),
> @@ -380,6 +409,15 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* OR */                        OP_TABLE_ENTRY (AML_BIT_OR_OP,              0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* PACKAGE */                   OP_TABLE_ENTRY (AML_PACKAGE_OP,             0,                              NODE_AML_PACKAGE,   ACPI_BTYPE_PACKAGE),
>  /* PACKAGEP_LENGTH */           OP_TABLE_ENTRY (AML_PACKAGE_LENGTH,         0,                              NODE_AML_PACKAGE,   0),
> +/* PARITYTYPE_EVEN */           OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* PARITYTYPE_MARK */           OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
> +/* PARITYTYPE_NONE */           OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* PARITYTYPE_ODD */            OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
> +/* PARITYTYPE_SPACE */          OP_TABLE_ENTRY (AML_BYTE_OP,                4,                              0,                  0),
> +/* PIN_NOPULL */                OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
> +/* PIN_PULLDEFAULT */           OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* PIN_PULLDOWN */              OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
> +/* PIN_PULLUP */                OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* POWERRESOURCE */             OP_TABLE_ENTRY (AML_POWER_RES_OP,           0,                              NODE_AML_PACKAGE,   0),
>  /* PROCESSOR */                 OP_TABLE_ENTRY (AML_PROCESSOR_OP,           0,                              NODE_AML_PACKAGE,   0),
>  /* QWORDCONST */                OP_TABLE_ENTRY (AML_RAW_DATA_QWORD,         0,                              0,                  ACPI_BTYPE_INTEGER),
> @@ -395,6 +433,9 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* REFOF */                     OP_TABLE_ENTRY (AML_REF_OF_OP,              0,                              0,                  ACPI_BTYPE_REFERENCE),
>  /* REGIONSPACE_CMOS */          OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_CMOS,            0,                  0),
>  /* REGIONSPACE_EC */            OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_EC,              0,                  0),
> +/* REGIONSPACE_FFIXEDHW */      OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_FIXED_HARDWARE,  0,                  0),
> +/* REGIONSPACE_GPIO */          OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_GPIO,            0,                  0),
> +/* REGIONSPACE_GSBUS */         OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_GSBUS,           0,                  0),
>  /* REGIONSPACE_IO */            OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_SYSTEM_IO,       0,                  0),
>  /* REGIONSPACE_IPMI */          OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_IPMI,            0,                  0),
>  /* REGIONSPACE_MEM */           OP_TABLE_ENTRY (AML_RAW_DATA_BYTE,          ACPI_ADR_SPACE_SYSTEM_MEMORY,   0,                  0),
> @@ -414,15 +455,24 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* SERIALIZERULE_NOTSERIAL */   OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* SERIALIZERULE_SERIAL */      OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* SHARETYPE_EXCLUSIVE */       OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* SHARETYPE_EXCLUSIVEWAKE */   OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
>  /* SHARETYPE_SHARED */          OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* SHARETYPE_SHAREDWAKE */      OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
>  /* SHIFTLEFT */                 OP_TABLE_ENTRY (AML_SHIFT_LEFT_OP,          0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* SHIFTRIGHT */                OP_TABLE_ENTRY (AML_SHIFT_RIGHT_OP,         0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* SIGNAL */                    OP_TABLE_ENTRY (AML_SIGNAL_OP,              0,                              0,                  0),
>  /* SIZEOF */                    OP_TABLE_ENTRY (AML_SIZE_OF_OP,             0,                              0,                  ACPI_BTYPE_INTEGER),
> +/* SLAVEMODE_CONTROLLERINIT */  OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* SLAVEMODE_DEVICEINIT */      OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* SLEEP */                     OP_TABLE_ENTRY (AML_SLEEP_OP,               0,                              0,                  0),
> +/* SPISERIALBUS */              OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* STALL */                     OP_TABLE_ENTRY (AML_STALL_OP,               0,                              0,                  0),
>  /* STARTDEPENDENTFN */          OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* STARTDEPENDENTFN_NOPRI */    OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* STOPBITS_ONE */              OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* STOPBITS_ONEPLUSHALF */      OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
> +/* STOPBITS_TWO */              OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
> +/* STOPBITS_ZERO */             OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* STORE */                     OP_TABLE_ENTRY (AML_STORE_OP,               0,                              0,                  ACPI_BTYPE_DATA_REFERENCE),
>  /* STRING_LITERAL */            OP_TABLE_ENTRY (AML_STRING_OP,              0,                              0,                  ACPI_BTYPE_STRING),
>  /* SUBTRACT */                  OP_TABLE_ENTRY (AML_SUBTRACT_OP,            0,                              0,                  ACPI_BTYPE_INTEGER),
> @@ -440,6 +490,7 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* TRANSLATIONTYPE_SPARSE */    OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* TYPE_STATIC */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* TYPE_TRANSLATION */          OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
> +/* UART_SERIALBUS */            OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
>  /* UNICODE */                   OP_TABLE_ENTRY (AML_BUFFER_OP,              0,                              NODE_AML_PACKAGE,   0),
>  /* UNLOAD */                    OP_TABLE_ENTRY (AML_UNLOAD_OP,              0,                              0,                  0),
>  /* UPDATERULE_ONES */           OP_TABLE_ENTRY (AML_BYTE_OP,                AML_FIELD_UPDATE_WRITE_AS_ONES, 0,                  0),
> @@ -450,10 +501,18 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
>  /* VENDORSHORT */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* WAIT */                      OP_TABLE_ENTRY (AML_WAIT_OP,                0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* WHILE */                     OP_TABLE_ENTRY (AML_WHILE_OP,               0,                              NODE_AML_PACKAGE,   0),
> +/* WIREMODE_FOUR */             OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* WIREMODE_THREE */            OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* WORDBUSNUMBER */             OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* WORDCONST */                 OP_TABLE_ENTRY (AML_RAW_DATA_WORD,          0,                              0,                  ACPI_BTYPE_INTEGER),
>  /* WORDIO */                    OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* WORDSPACE */                 OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* XFERSIZE_8 */                OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* XFERSIZE_16 */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* XFERSIZE_32 */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* XFERSIZE_64 */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* XFERSIZE_128 */              OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
> +/* XFERSIZE_256 */              OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* XFERTYPE_8 */                OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
>  /* XFERTYPE_8_16 */             OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
>  /* XFERTYPE_16 */               OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index 957b413..4e5bb31 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -133,17 +133,20 @@
>  typedef enum
>  {
>     ASL_MSG_RESERVED = 0,
> +
> +    ASL_MSG_ALIGNMENT,
>     ASL_MSG_ALPHANUMERIC_STRING,
>     ASL_MSG_AML_NOT_IMPLEMENTED,
>     ASL_MSG_ARG_COUNT_HI,
>     ASL_MSG_ARG_COUNT_LO,
>     ASL_MSG_ARG_INIT,
>     ASL_MSG_BACKWARDS_OFFSET,
> -    ASL_MSG_BITS_TO_BYTES,
>     ASL_MSG_BUFFER_LENGTH,
> -    ASL_MSG_BYTES_TO_BITS,
>     ASL_MSG_CLOSE,
>     ASL_MSG_COMPILER_INTERNAL,
> +    ASL_MSG_COMPILER_RESERVED,
> +    ASL_MSG_CONNECTION_MISSING,
> +    ASL_MSG_CONNECTION_INVALID,
>     ASL_MSG_CONSTANT_EVALUATION,
>     ASL_MSG_CONSTANT_FOLDED,
>     ASL_MSG_CORE_EXCEPTION,
> @@ -162,15 +165,26 @@ typedef enum
>     ASL_MSG_FIELD_ACCESS_WIDTH,
>     ASL_MSG_FIELD_UNIT_ACCESS_WIDTH,
>     ASL_MSG_FIELD_UNIT_OFFSET,
> +    ASL_MSG_GPE_NAME_CONFLICT,
> +    ASL_MSG_HID_LENGTH,
> +    ASL_MSG_HID_PREFIX,
> +    ASL_MSG_HID_SUFFIX,
>     ASL_MSG_INCLUDE_FILE_OPEN,
>     ASL_MSG_INPUT_FILE_OPEN,
>     ASL_MSG_INTEGER_LENGTH,
>     ASL_MSG_INTEGER_OPTIMIZATION,
>     ASL_MSG_INTERRUPT_LIST,
>     ASL_MSG_INTERRUPT_NUMBER,
> +    ASL_MSG_INVALID_ACCESS_SIZE,
> +    ASL_MSG_INVALID_ADDR_FLAGS,
>     ASL_MSG_INVALID_CONSTANT_OP,
>     ASL_MSG_INVALID_EISAID,
>     ASL_MSG_INVALID_ESCAPE,
> +    ASL_MSG_INVALID_GRAN_FIXED,
> +    ASL_MSG_INVALID_GRANULARITY,
> +    ASL_MSG_INVALID_LENGTH,
> +    ASL_MSG_INVALID_LENGTH_FIXED,
> +    ASL_MSG_INVALID_MIN_MAX,
>     ASL_MSG_INVALID_OPERAND,
>     ASL_MSG_INVALID_PERFORMANCE,
>     ASL_MSG_INVALID_PRIORITY,
> @@ -179,32 +193,43 @@ typedef enum
>     ASL_MSG_INVALID_TIME,
>     ASL_MSG_INVALID_TYPE,
>     ASL_MSG_INVALID_UUID,
> +    ASL_MSG_ISA_ADDRESS,
> +    ASL_MSG_LEADING_ASTERISK,
>     ASL_MSG_LIST_LENGTH_LONG,
>     ASL_MSG_LIST_LENGTH_SHORT,
>     ASL_MSG_LISTING_FILE_OPEN,
>     ASL_MSG_LISTING_FILENAME,
>     ASL_MSG_LOCAL_INIT,
> +    ASL_MSG_LOCAL_OUTSIDE_METHOD,
>     ASL_MSG_LONG_LINE,
>     ASL_MSG_MEMORY_ALLOCATION,
>     ASL_MSG_MISSING_ENDDEPENDENT,
>     ASL_MSG_MISSING_STARTDEPENDENT,
> +    ASL_MSG_MULTIPLE_DEFAULT,
>     ASL_MSG_MULTIPLE_TYPES,
>     ASL_MSG_NAME_EXISTS,
>     ASL_MSG_NAME_OPTIMIZATION,
> +    ASL_MSG_NAMED_OBJECT_IN_WHILE,
>     ASL_MSG_NESTED_COMMENT,
>     ASL_MSG_NO_CASES,
> +    ASL_MSG_NO_REGION,
>     ASL_MSG_NO_RETVAL,
>     ASL_MSG_NO_WHILE,
>     ASL_MSG_NON_ASCII,
> +    ASL_MSG_NON_ZERO,
>     ASL_MSG_NOT_EXIST,
>     ASL_MSG_NOT_FOUND,
>     ASL_MSG_NOT_METHOD,
>     ASL_MSG_NOT_PARAMETER,
>     ASL_MSG_NOT_REACHABLE,
> +    ASL_MSG_NOT_REFERENCED,
> +    ASL_MSG_NULL_DESCRIPTOR,
> +    ASL_MSG_NULL_STRING,
>     ASL_MSG_OPEN,
>     ASL_MSG_OUTPUT_FILE_OPEN,
>     ASL_MSG_OUTPUT_FILENAME,
>     ASL_MSG_PACKAGE_LENGTH,
> +    ASL_MSG_PREPROCESSOR_FILENAME,
>     ASL_MSG_READ,
>     ASL_MSG_RECURSION,
>     ASL_MSG_REGION_BUFFER_ACCESS,
> @@ -212,6 +237,7 @@ typedef enum
>     ASL_MSG_RESERVED_ARG_COUNT_HI,
>     ASL_MSG_RESERVED_ARG_COUNT_LO,
>     ASL_MSG_RESERVED_METHOD,
> +    ASL_MSG_RESERVED_NO_RETURN_VAL,
>     ASL_MSG_RESERVED_OPERAND_TYPE,
>     ASL_MSG_RESERVED_RETURN_VALUE,
>     ASL_MSG_RESERVED_USE,
> @@ -220,63 +246,58 @@ typedef enum
>     ASL_MSG_RESOURCE_INDEX,
>     ASL_MSG_RESOURCE_LIST,
>     ASL_MSG_RESOURCE_SOURCE,
> +    ASL_MSG_RESULT_NOT_USED,
>     ASL_MSG_RETURN_TYPES,
>     ASL_MSG_SCOPE_FWD_REF,
>     ASL_MSG_SCOPE_TYPE,
>     ASL_MSG_SEEK,
> +    ASL_MSG_SERIALIZED,
>     ASL_MSG_SINGLE_NAME_OPTIMIZATION,
>     ASL_MSG_SOME_NO_RETVAL,
> +    ASL_MSG_STRING_LENGTH,
>     ASL_MSG_SWITCH_TYPE,
>     ASL_MSG_SYNC_LEVEL,
>     ASL_MSG_SYNTAX,
>     ASL_MSG_TABLE_SIGNATURE,
> +    ASL_MSG_TAG_LARGER,
> +    ASL_MSG_TAG_SMALLER,
> +    ASL_MSG_TIMEOUT,
>     ASL_MSG_TOO_MANY_TEMPS,
>     ASL_MSG_UNKNOWN_RESERVED_NAME,
>     ASL_MSG_UNREACHABLE_CODE,
>     ASL_MSG_UNSUPPORTED,
> +    ASL_MSG_UPPER_CASE,
>     ASL_MSG_VENDOR_LIST,
>     ASL_MSG_WRITE,
> -    ASL_MSG_MULTIPLE_DEFAULT,
> -    ASL_MSG_TIMEOUT,
> -    ASL_MSG_RESULT_NOT_USED,
> -    ASL_MSG_NOT_REFERENCED,
> -    ASL_MSG_NON_ZERO,
> -    ASL_MSG_STRING_LENGTH,
> -    ASL_MSG_SERIALIZED,
> -    ASL_MSG_COMPILER_RESERVED,
> -    ASL_MSG_NAMED_OBJECT_IN_WHILE,
> -    ASL_MSG_LOCAL_OUTSIDE_METHOD,
> -    ASL_MSG_ALIGNMENT,
> -    ASL_MSG_ISA_ADDRESS,
> -    ASL_MSG_INVALID_MIN_MAX,
> -    ASL_MSG_INVALID_LENGTH,
> -    ASL_MSG_INVALID_LENGTH_FIXED,
> -    ASL_MSG_INVALID_GRANULARITY,
> -    ASL_MSG_INVALID_GRAN_FIXED,
> -    ASL_MSG_INVALID_ACCESS_SIZE,
> -    ASL_MSG_INVALID_ADDR_FLAGS,
> -    ASL_MSG_NULL_DESCRIPTOR,
> -    ASL_MSG_UPPER_CASE,
> -    ASL_MSG_HID_LENGTH,
> -    ASL_MSG_NULL_STRING,
> -    ASL_MSG_LEADING_ASTERISK,
> -    ASL_MSG_RESERVED_NO_RETURN_VAL,
> -    ASL_MSG_GPE_NAME_CONFLICT,
> -    ASL_MSG_NO_REGION,
>
> -    ASL_MSG_INVALID_FIELD_NAME,
> -    ASL_MSG_INTEGER_SIZE,
> -    ASL_MSG_INVALID_HEX_INTEGER,
> +    /* These messages are used by the Preprocessor only */
> +
> +    ASL_MSG_DIRECTIVE_SYNTAX,
> +    ASL_MSG_ENDIF_MISMATCH,
> +    ASL_MSG_ERROR_DIRECTIVE,
> +    ASL_MSG_EXISTING_NAME,
> +    ASL_MSG_INVALID_INVOCATION,
> +    ASL_MSG_MACRO_SYNTAX,
> +    ASL_MSG_TOO_MANY_ARGUMENTS,
> +    ASL_MSG_UNKNOWN_DIRECTIVE,
> +    ASL_MSG_UNKNOWN_PRAGMA,
> +
> +
> +    /* These messages are used by the data table compiler only */
> +
>     ASL_MSG_BUFFER_ELEMENT,
> -    ASL_MSG_RESERVED_VALUE,
> +    ASL_MSG_DIVIDE_BY_ZERO,
>     ASL_MSG_FLAG_VALUE,
> -    ASL_MSG_ZERO_VALUE,
> -    ASL_MSG_UNKNOWN_TABLE,
> -    ASL_MSG_UNKNOWN_SUBTABLE,
> +    ASL_MSG_INTEGER_SIZE,
> +    ASL_MSG_INVALID_EXPRESSION,
> +    ASL_MSG_INVALID_FIELD_NAME,
> +    ASL_MSG_INVALID_HEX_INTEGER,
>     ASL_MSG_OEM_TABLE,
> +    ASL_MSG_RESERVED_VALUE,
>     ASL_MSG_UNKNOWN_LABEL,
> -    ASL_MSG_INVALID_EXPRESSION,
> -    ASL_MSG_DIVIDE_BY_ZERO
> +    ASL_MSG_UNKNOWN_SUBTABLE,
> +    ASL_MSG_UNKNOWN_TABLE,
> +    ASL_MSG_ZERO_VALUE
>
>  } ASL_MESSAGE_IDS;
>
> @@ -287,17 +308,19 @@ typedef enum
>
>  char                        *AslMessages [] = {
>  /*    The zeroth message is reserved */    "",
> +/*    ASL_MSG_ALIGNMENT */                  "Must be a multiple of alignment/granularity value",
>  /*    ASL_MSG_ALPHANUMERIC_STRING */        "String must be entirely alphanumeric",
>  /*    ASL_MSG_AML_NOT_IMPLEMENTED */        "Opcode is not implemented in compiler AML code generator",
>  /*    ASL_MSG_ARG_COUNT_HI */               "Too many arguments",
>  /*    ASL_MSG_ARG_COUNT_LO */               "Too few arguments",
>  /*    ASL_MSG_ARG_INIT */                   "Method argument is not initialized",
>  /*    ASL_MSG_BACKWARDS_OFFSET */           "Invalid backwards offset",
> -/*    ASL_MSG_BITS_TO_BYTES */              "Field offset is in bits, but a byte offset is required",
>  /*    ASL_MSG_BUFFER_LENGTH */              "Effective AML buffer length is zero",
> -/*    ASL_MSG_BYTES_TO_BITS */              "Field offset is in bytes, but a bit offset is required",
>  /*    ASL_MSG_CLOSE */                      "Could not close file",
>  /*    ASL_MSG_COMPILER_INTERNAL */          "Internal compiler error",
> +/*    ASL_MSG_COMPILER_RESERVED */          "Use of compiler reserved name",
> +/*    ASL_MSG_CONNECTION_MISSING */         "A Connection operator is required for this field SpaceId",
> +/*    ASL_MSG_CONNECTION_INVALID */         "Invalid OpRegion SpaceId for use of Connection operator",
>  /*    ASL_MSG_CONSTANT_EVALUATION */        "Could not evaluate constant expression",
>  /*    ASL_MSG_CONSTANT_FOLDED */            "Constant expression evaluated and reduced",
>  /*    ASL_MSG_CORE_EXCEPTION */             "From ACPI CA Subsystem",
> @@ -316,15 +339,26 @@ char                        *AslMessages [] = {
>  /*    ASL_MSG_FIELD_ACCESS_WIDTH */         "Access width is greater than region size",
>  /*    ASL_MSG_FIELD_UNIT_ACCESS_WIDTH */    "Access width of Field Unit extends beyond region limit",
>  /*    ASL_MSG_FIELD_UNIT_OFFSET */          "Field Unit extends beyond region limit",
> +/*    ASL_MSG_GPE_NAME_CONFLICT */          "Name conflicts with a previous GPE method",
> +/*    ASL_MSG_HID_LENGTH */                 "_HID string must be exactly 7 or 8 characters",
> +/*    ASL_MSG_HID_PREFIX */                 "_HID prefix must be all uppercase or decimal digits",
> +/*    ASL_MSG_HID_SUFFIX */                 "_HID suffix must be all hex digits",
>  /*    ASL_MSG_INCLUDE_FILE_OPEN */          "Could not open include file",
>  /*    ASL_MSG_INPUT_FILE_OPEN */            "Could not open input file",
>  /*    ASL_MSG_INTEGER_LENGTH */             "64-bit integer in 32-bit table, truncating",
>  /*    ASL_MSG_INTEGER_OPTIMIZATION */       "Integer optimized to single-byte AML opcode",
>  /*    ASL_MSG_INTERRUPT_LIST */             "Too many interrupts (16 max)",
>  /*    ASL_MSG_INTERRUPT_NUMBER */           "Invalid interrupt number (must be 0-15)",
> +/*    ASL_MSG_INVALID_ACCESS_SIZE */        "Invalid AccessSize (Maximum is 4 - QWord access)",
> +/*    ASL_MSG_INVALID_ADDR_FLAGS */         "Invalid combination of Length and Min/Max fixed flags",
>  /*    ASL_MSG_INVALID_CONSTANT_OP */        "Invalid operator in constant expression (not type 3/4/5)",
>  /*    ASL_MSG_INVALID_EISAID */             "EISAID string must be of the form \"UUUXXXX\" (3 uppercase, 4 hex digits)",
>  /*    ASL_MSG_INVALID_ESCAPE */             "Invalid or unknown escape sequence",
> +/*    ASL_MSG_INVALID_GRAN_FIXED */         "Granularity must be zero for fixed Min/Max",
> +/*    ASL_MSG_INVALID_GRANULARITY */        "Granularity must be zero or a power of two minus one",
> +/*    ASL_MSG_INVALID_LENGTH */             "Length is larger than Min/Max window",
> +/*    ASL_MSG_INVALID_LENGTH_FIXED */       "Length is not equal to fixed Min/Max window",
> +/*    ASL_MSG_INVALID_MIN_MAX */            "Address Min is greater than Address Max",
>  /*    ASL_MSG_INVALID_OPERAND */            "Invalid operand",
>  /*    ASL_MSG_INVALID_PERFORMANCE */        "Invalid performance/robustness value",
>  /*    ASL_MSG_INVALID_PRIORITY */           "Invalid priority value",
> @@ -333,32 +367,43 @@ char                        *AslMessages [] = {
>  /*    ASL_MSG_INVALID_TIME */               "Time parameter too long (255 max)",
>  /*    ASL_MSG_INVALID_TYPE */               "Invalid type",
>  /*    ASL_MSG_INVALID_UUID */               "UUID string must be of the form \"aabbccdd-eeff-gghh-iijj-kkllmmnnoopp\"",
> +/*    ASL_MSG_ISA_ADDRESS */                "Maximum 10-bit ISA address (0x3FF)",
> +/*    ASL_MSG_LEADING_ASTERISK */           "Invalid leading asterisk",
>  /*    ASL_MSG_LIST_LENGTH_LONG */           "Initializer list longer than declared package length",
>  /*    ASL_MSG_LIST_LENGTH_SHORT */          "Initializer list shorter than declared package length",
>  /*    ASL_MSG_LISTING_FILE_OPEN */          "Could not open listing file",
>  /*    ASL_MSG_LISTING_FILENAME */           "Could not create listing filename",
>  /*    ASL_MSG_LOCAL_INIT */                 "Method local variable is not initialized",
> +/*    ASL_MSG_LOCAL_OUTSIDE_METHOD */       "Local or Arg used outside a control method",
>  /*    ASL_MSG_LONG_LINE */                  "Splitting long input line",
>  /*    ASL_MSG_MEMORY_ALLOCATION */          "Memory allocation failure",
>  /*    ASL_MSG_MISSING_ENDDEPENDENT */       "Missing EndDependentFn() macro in dependent resource list",
>  /*    ASL_MSG_MISSING_STARTDEPENDENT */     "Missing StartDependentFn() macro in dependent resource list",
> +/*    ASL_MSG_MULTIPLE_DEFAULT */           "More than one Default statement within Switch construct",
>  /*    ASL_MSG_MULTIPLE_TYPES */             "Multiple types",
>  /*    ASL_MSG_NAME_EXISTS */                "Name already exists in scope",
>  /*    ASL_MSG_NAME_OPTIMIZATION */          "NamePath optimized",
> +/*    ASL_MSG_NAMED_OBJECT_IN_WHILE */      "Creating a named object in a While loop",
>  /*    ASL_MSG_NESTED_COMMENT */             "Nested comment found",
>  /*    ASL_MSG_NO_CASES */                   "No Case statements under Switch",
> +/*    ASL_MSG_NO_REGION */                  "_REG has no corresponding Operation Region",
>  /*    ASL_MSG_NO_RETVAL */                  "Called method returns no value",
>  /*    ASL_MSG_NO_WHILE */                   "No enclosing While statement",
>  /*    ASL_MSG_NON_ASCII */                  "Invalid characters found in file",
> +/*    ASL_MSG_NON_ZERO */                   "Operand evaluates to zero",
>  /*    ASL_MSG_NOT_EXIST */                  "Object does not exist",
>  /*    ASL_MSG_NOT_FOUND */                  "Object not found or not accessible from scope",
>  /*    ASL_MSG_NOT_METHOD */                 "Not a control method, cannot invoke",
>  /*    ASL_MSG_NOT_PARAMETER */              "Not a parameter, used as local only",
>  /*    ASL_MSG_NOT_REACHABLE */              "Object is not accessible from this scope",
> +/*    ASL_MSG_NOT_REFERENCED */             "Namespace object is not referenced",
> +/*    ASL_MSG_NULL_DESCRIPTOR */            "Min/Max/Length/Gran are all zero, but no resource tag",
> +/*    ASL_MSG_NULL_STRING */                "Invalid zero-length (null) string",
>  /*    ASL_MSG_OPEN */                       "Could not open file",
>  /*    ASL_MSG_OUTPUT_FILE_OPEN */           "Could not open output AML file",
>  /*    ASL_MSG_OUTPUT_FILENAME */            "Could not create output filename",
>  /*    ASL_MSG_PACKAGE_LENGTH */             "Effective AML package length is zero",
> +/*    ASL_MSG_PREPROCESSOR_FILENAME */      "Could not create preprocessor filename",
>  /*    ASL_MSG_READ */                       "Could not read file",
>  /*    ASL_MSG_RECURSION */                  "Recursive method call",
>  /*    ASL_MSG_REGION_BUFFER_ACCESS */       "Host Operation Region requires BufferAcc access",
> @@ -366,6 +411,7 @@ char                        *AslMessages [] = {
>  /*    ASL_MSG_RESERVED_ARG_COUNT_HI */      "Reserved method has too many arguments",
>  /*    ASL_MSG_RESERVED_ARG_COUNT_LO */      "Reserved method has too few arguments",
>  /*    ASL_MSG_RESERVED_METHOD */            "Reserved name must be a control method",
> +/*    ASL_MSG_RESERVED_NO_RETURN_VAL */     "Reserved method should not return a value",
>  /*    ASL_MSG_RESERVED_OPERAND_TYPE */      "Invalid object type for reserved name",
>  /*    ASL_MSG_RESERVED_RETURN_VALUE */      "Reserved method must return a value",
>  /*    ASL_MSG_RESERVED_USE */               "Invalid use of reserved name",
> @@ -374,65 +420,57 @@ char                        *AslMessages [] = {
>  /*    ASL_MSG_RESOURCE_INDEX */             "Missing ResourceSourceIndex (required)",
>  /*    ASL_MSG_RESOURCE_LIST */              "Too many resource items (internal error)",
>  /*    ASL_MSG_RESOURCE_SOURCE */            "Missing ResourceSource string (required)",
> +/*    ASL_MSG_RESULT_NOT_USED */            "Result is not used, operator has no effect",
>  /*    ASL_MSG_RETURN_TYPES */               "Not all control paths return a value",
>  /*    ASL_MSG_SCOPE_FWD_REF */              "Forward references from Scope operator not allowed",
>  /*    ASL_MSG_SCOPE_TYPE */                 "Existing object has invalid type for Scope operator",
>  /*    ASL_MSG_SEEK */                       "Could not seek file",
> +/*    ASL_MSG_SERIALIZED */                 "Control Method marked Serialized",
>  /*    ASL_MSG_SINGLE_NAME_OPTIMIZATION */   "NamePath optimized to NameSeg (uses run-time search path)",
>  /*    ASL_MSG_SOME_NO_RETVAL */             "Called method may not always return a value",
> +/*    ASL_MSG_STRING_LENGTH */              "String literal too long",
>  /*    ASL_MSG_SWITCH_TYPE */                "Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer",
>  /*    ASL_MSG_SYNC_LEVEL */                 "SyncLevel must be in the range 0-15",
>  /*    ASL_MSG_SYNTAX */                     "",
>  /*    ASL_MSG_TABLE_SIGNATURE */            "Invalid Table Signature",
> +/*    ASL_MSG_TAG_LARGER */                 "ResourceTag larger than Field",
> +/*    ASL_MSG_TAG_SMALLER */                "ResourceTag smaller than Field",
> +/*    ASL_MSG_TIMEOUT */                    "Result is not used, possible operator timeout will be missed",
>  /*    ASL_MSG_TOO_MANY_TEMPS */             "Method requires too many temporary variables (_T_x)",
>  /*    ASL_MSG_UNKNOWN_RESERVED_NAME */      "Unknown reserved name",
>  /*    ASL_MSG_UNREACHABLE_CODE */           "Statement is unreachable",
>  /*    ASL_MSG_UNSUPPORTED */                "Unsupported feature",
> +/*    ASL_MSG_UPPER_CASE */                 "Non-hex letters must be upper case",
>  /*    ASL_MSG_VENDOR_LIST */                "Too many vendor data bytes (7 max)",
>  /*    ASL_MSG_WRITE */                      "Could not write file",
> -/*    ASL_MSG_MULTIPLE_DEFAULT */           "More than one Default statement within Switch construct",
> -/*    ASL_MSG_TIMEOUT */                    "Result is not used, possible operator timeout will be missed",
> -/*    ASL_MSG_RESULT_NOT_USED */            "Result is not used, operator has no effect",
> -/*    ASL_MSG_NOT_REFERENCED */             "Namespace object is not referenced",
> -/*    ASL_MSG_NON_ZERO */                   "Operand evaluates to zero",
> -/*    ASL_MSG_STRING_LENGTH */              "String literal too long",
> -/*    ASL_MSG_SERIALIZED */                 "Control Method marked Serialized",
> -/*    ASL_MSG_COMPILER_RESERVED */          "Use of compiler reserved name",
> -/*    ASL_MSG_NAMED_OBJECT_IN_WHILE */      "Creating a named object in a While loop",
> -/*    ASL_MSG_LOCAL_OUTSIDE_METHOD */       "Local or Arg used outside a control method",
> -/*    ASL_MSG_ALIGNMENT */                  "Must be a multiple of alignment/granularity value",
> -/*    ASL_MSG_ISA_ADDRESS */                "Maximum 10-bit ISA address (0x3FF)",
> -/*    ASL_MSG_INVALID_MIN_MAX */            "Address Min is greater than Address Max",
> -/*    ASL_MSG_INVALID_LENGTH */             "Length is larger than Min/Max window",
> -/*    ASL_MSG_INVALID_LENGTH_FIXED */       "Length is not equal to fixed Min/Max window",
> -/*    ASL_MSG_INVALID_GRANULARITY */        "Granularity must be zero or a power of two minus one",
> -/*    ASL_MSG_INVALID_GRAN_FIXED */         "Granularity must be zero for fixed Min/Max",
> -/*    ASL_MSG_INVALID_ACCESS_SIZE */        "Invalid AccessSize (Maximum is 4 - QWord access)",
> -/*    ASL_MSG_INVALID_ADDR_FLAGS */         "Invalid combination of Length and Min/Max fixed flags",
> -/*    ASL_MSG_NULL_DESCRIPTOR */            "Min/Max/Length/Gran are all zero, but no resource tag",
> -/*    ASL_MSG_UPPER_CASE */                 "Non-hex letters must be upper case",
> -/*    ASL_MSG_HID_LENGTH */                 "_HID string must be exactly 7 or 8 characters",
> -/*    ASL_MSG_NULL_STRING */                "Invalid zero-length (null) string",
> -/*    ASL_MSG_LEADING_ASTERISK */           "Invalid leading asterisk",
> -/*    ASL_MSG_RESERVED_NO_RETURN_VAL */     "Reserved method should not return a value",
> -/*    ASL_MSG_GPE_NAME_CONFLICT */          "Name conflicts with a previous GPE method",
> -/*    ASL_MSG_NO_REGION */                  "_REG has no corresponding Operation Region",
>
> -/* These messages are used by the data table compiler only */
> +/* Preprocessor */
> +
> +/*    ASL_MSG_DIRECTIVE_SYNTAX */           "Invalid directive syntax",
> +/*    ASL_MSG_ENDIF_MISMATCH */             "Mismatched #endif",
> +/*    ASL_MSG_ERROR_DIRECTIVE */            "#error",
> +/*    ASL_MSG_EXISTING_NAME */              "Name is already defined",
> +/*    ASL_MSG_INVALID_INVOCATION */         "Invalid macro invocation",
> +/*    ASL_MSG_MACRO_SYNTAX */               "Invalid macro syntax",
> +/*    ASL_MSG_TOO_MANY_ARGUMENTS */         "Too many macro arguments",
> +/*    ASL_MSG_UNKNOWN_DIRECTIVE */          "Unknown directive",
> +/*    ASL_MSG_UNKNOWN_PRAGMA */             "Unknown pragma",
> +
> +/* Table compiler */
>
> -/*    ASL_MSG_INVALID_FIELD_NAME */         "Invalid Field Name",
> -/*    ASL_MSG_INTEGER_SIZE */               "Integer too large for target",
> -/*    ASL_MSG_INVALID_HEX_INTEGER */        "Invalid hex integer constant",
>  /*    ASL_MSG_BUFFER_ELEMENT */             "Invalid element in buffer initializer list",
> -/*    ASL_MSG_RESERVED_VALUE */             "Reserved field must be zero",
> +/*    ASL_MSG_DIVIDE_BY_ZERO */             "Expression contains divide-by-zero",
>  /*    ASL_MSG_FLAG_VALUE */                 "Flag value is too large",
> -/*    ASL_MSG_ZERO_VALUE */                 "Value must be non-zero",
> -/*    ASL_MSG_UNKNOWN_TABLE */              "Unknown ACPI table signature",
> -/*    ASL_MSG_UNKNOWN_SUBTABLE */           "Unknown subtable type",
> +/*    ASL_MSG_INTEGER_SIZE */               "Integer too large for target",
> +/*    ASL_MSG_INVALID_EXPRESSION */         "Invalid expression",
> +/*    ASL_MSG_INVALID_FIELD_NAME */         "Invalid Field Name",
> +/*    ASL_MSG_INVALID_HEX_INTEGER */        "Invalid hex integer constant",
>  /*    ASL_MSG_OEM_TABLE */                  "OEM table - unknown contents",
> +/*    ASL_MSG_RESERVED_VALUE */             "Reserved field must be zero",
>  /*    ASL_MSG_UNKNOWN_LABEL */              "Label is undefined",
> -/*    ASL_MSG_INVALID_EXPRESSION */         "Invalid expression",
> -/*    ASL_MSG_DIVIDE_BY_ZERO */             "Expression contains divide-by-zero"
> +/*    ASL_MSG_UNKNOWN_SUBTABLE */           "Unknown subtable type",
> +/*    ASL_MSG_UNKNOWN_TABLE */              "Unknown ACPI table signature",
> +/*    ASL_MSG_ZERO_VALUE */                 "Value must be non-zero"
>  };
>
>
> diff --git a/src/acpica/source/compiler/aslopcodes.c b/src/acpica/source/compiler/aslopcodes.c
> index 9f84953..cddc945 100644
> --- a/src/acpica/source/compiler/aslopcodes.c
> +++ b/src/acpica/source/compiler/aslopcodes.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -130,6 +130,10 @@ OpcDoAccessAs (
>     ACPI_PARSE_OBJECT       *Op);
>
>  static void
> +OpcDoConnection (
> +    ACPI_PARSE_OBJECT       *Op);
> +
> +static void
>  OpcDoUnicode (
>     ACPI_PARSE_OBJECT       *Op);
>
> @@ -393,26 +397,128 @@ static void
>  OpcDoAccessAs (
>     ACPI_PARSE_OBJECT       *Op)
>  {
> -    ACPI_PARSE_OBJECT       *Next;
> +    ACPI_PARSE_OBJECT       *TypeOp;
> +    ACPI_PARSE_OBJECT       *AttribOp;
> +    ACPI_PARSE_OBJECT       *LengthOp;
> +    UINT8                   Attribute;
>
>
>     Op->Asl.AmlOpcodeLength = 1;
> -    Next = Op->Asl.Child;
> +    TypeOp = Op->Asl.Child;
>
>     /* First child is the access type */
>
> -    Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> -    Next->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +    TypeOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> +    TypeOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
>
>     /* Second child is the optional access attribute */
>
> -    Next = Next->Asl.Next;
> -    if (Next->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> +    AttribOp = TypeOp->Asl.Next;
> +    if (AttribOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> +    {
> +        AttribOp->Asl.Value.Integer = 0;
> +    }
> +    AttribOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> +    AttribOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +
> +    /* Only a few AccessAttributes support AccessLength */
> +
> +    Attribute = (UINT8) AttribOp->Asl.Value.Integer;
> +    if ((Attribute != AML_FIELD_ATTRIB_MULTIBYTE) &&
> +        (Attribute != AML_FIELD_ATTRIB_RAW_BYTES) &&
> +        (Attribute != AML_FIELD_ATTRIB_RAW_PROCESS))
> +    {
> +        return;
> +    }
> +
> +    Op->Asl.AmlOpcode = AML_FIELD_EXT_ACCESS_OP;
> +
> +    /*
> +     * Child of Attributes is the AccessLength (required for Multibyte,
> +     * RawBytes, RawProcess.)
> +     */
> +    LengthOp = AttribOp->Asl.Child;
> +    if (!LengthOp)
> +    {
> +        return;
> +    }
> +
> +    /* TBD: probably can remove */
> +
> +    if (LengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> +    {
> +        LengthOp->Asl.Value.Integer = 16;
> +    }
> +
> +    LengthOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> +    LengthOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    OpcDoConnection
> + *
> + * PARAMETERS:  Op        - Parse node
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Implement the Connection ASL keyword.
> + *
> + ******************************************************************************/
> +
> +static void
> +OpcDoConnection (
> +    ACPI_PARSE_OBJECT       *Op)
> +{
> +    ASL_RESOURCE_NODE       *Rnode;
> +    ACPI_PARSE_OBJECT       *BufferOp;
> +    ACPI_PARSE_OBJECT       *BufferLengthOp;
> +    ACPI_PARSE_OBJECT       *BufferDataOp;
> +    UINT8                   State;
> +
> +
> +    Op->Asl.AmlOpcodeLength = 1;
> +
> +    if (Op->Asl.Child->Asl.AmlOpcode == AML_INT_NAMEPATH_OP)
> +    {
> +        return;
> +    }
> +
> +    BufferOp = Op->Asl.Child;
> +    BufferLengthOp = BufferOp->Asl.Child;
> +    BufferDataOp = BufferLengthOp->Asl.Next;
> +
> +    State = ACPI_RSTATE_NORMAL;
> +    Rnode = RsDoOneResourceDescriptor (BufferDataOp->Asl.Next, 0, &State);
> +    if (!Rnode)
>     {
> -        Next->Asl.Value.Integer = 0;
> +        return; /* error */
>     }
> -    Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
> -    Next->Asl.ParseOpcode = PARSEOP_RAW_DATA;
> +
> +    /*
> +     * Transform the nodes into the following
> +     *
> +     * Op           -> AML_BUFFER_OP
> +     * First Child  -> BufferLength
> +     * Second Child -> Descriptor Buffer (raw byte data)
> +     */
> +    BufferOp->Asl.ParseOpcode         = PARSEOP_BUFFER;
> +    BufferOp->Asl.AmlOpcode           = AML_BUFFER_OP;
> +    BufferOp->Asl.CompileFlags        = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC;
> +    UtSetParseOpName (BufferOp);
> +
> +    BufferLengthOp->Asl.ParseOpcode   = PARSEOP_INTEGER;
> +    BufferLengthOp->Asl.Value.Integer = Rnode->BufferLength;
> +    (void) OpcSetOptimalIntegerSize (BufferLengthOp);
> +    UtSetParseOpName (BufferLengthOp);
> +
> +    BufferDataOp->Asl.ParseOpcode         = PARSEOP_RAW_DATA;
> +    BufferDataOp->Asl.AmlOpcode           = AML_RAW_DATA_CHAIN;
> +    BufferDataOp->Asl.AmlOpcodeLength     = 0;
> +    BufferDataOp->Asl.AmlLength           = Rnode->BufferLength;
> +    BufferDataOp->Asl.Value.Buffer        = (UINT8 *) Rnode;
> +    UtSetParseOpName (BufferDataOp);
>  }
>
>
> @@ -617,7 +723,7 @@ OpcDoEisaId (
>
>  /*******************************************************************************
>  *
> - * FUNCTION:    OpcDoUiId
> + * FUNCTION:    OpcDoUuId
>  *
>  * PARAMETERS:  Op        - Parse node
>  *
> @@ -737,6 +843,11 @@ OpcGenerateAmlOpcode (
>         OpcDoAccessAs (Op);
>         break;
>
> +    case PARSEOP_CONNECTION:
> +
> +        OpcDoConnection (Op);
> +        break;
> +
>     case PARSEOP_EISAID:
>
>         OpcDoEisaId (Op);
> diff --git a/src/acpica/source/compiler/asloperands.c b/src/acpica/source/compiler/asloperands.c
> index e0280be..cc65d24 100644
> --- a/src/acpica/source/compiler/asloperands.c
> +++ b/src/acpica/source/compiler/asloperands.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -833,6 +833,7 @@ OpnDoPackage (
>
>     if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER)      ||
>         (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST)   ||
> +        (PackageLengthOp->Asl.ParseOpcode == PARSEOP_ZERO)         ||
>         (PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG))
>     {
>         if (!PackageLength)
> @@ -850,8 +851,11 @@ OpnDoPackage (
>      * If the PackageLength is a constant <= 255, we can change the
>      * AML opcode from VarPackage to a simple (ACPI 1.0) Package opcode.
>      */
> -    if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) &&
> -        (Op->Asl.Child->Asl.Value.Integer <= 255))
> +    if (((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) &&
> +            (Op->Asl.Child->Asl.Value.Integer <= 255))  ||
> +        (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONE) ||
> +        (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONES)||
> +        (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ZERO))
>     {
>         Op->Asl.AmlOpcode = AML_PACKAGE_OP;
>         Op->Asl.ParseOpcode = PARSEOP_PACKAGE;
> diff --git a/src/acpica/source/compiler/aslopt.c b/src/acpica/source/compiler/aslopt.c
> index 6ea357a..8080a70 100644
> --- a/src/acpica/source/compiler/aslopt.c
> +++ b/src/acpica/source/compiler/aslopt.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/aslpredef.c b/src/acpica/source/compiler/aslpredef.c
> index b72bca8..01c8eac 100644
> --- a/src/acpica/source/compiler/aslpredef.c
> +++ b/src/acpica/source/compiler/aslpredef.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -172,30 +172,49 @@ static const ACPI_PREDEFINED_INFO      ResourceNames[] = {
>     {{"_ATT",     0,      0}},
>     {{"_BAS",     0,      0}},
>     {{"_BM_",     0,      0}},
> +    {{"_DBT",     0,      0}},  /* Acpi 5.0 */
>     {{"_DEC",     0,      0}},
> +    {{"_DPL",     0,      0}},  /* Acpi 5.0 */
> +    {{"_DRS",     0,      0}},  /* Acpi 5.0 */
> +    {{"_END",     0,      0}},  /* Acpi 5.0 */
> +    {{"_FLC",     0,      0}},  /* Acpi 5.0 */
>     {{"_GRA",     0,      0}},
>     {{"_HE_",     0,      0}},
>     {{"_INT",     0,      0}},
> +    {{"_IOR",     0,      0}},  /* Acpi 5.0 */
>     {{"_LEN",     0,      0}},
> +    {{"_LIN",     0,      0}},  /* Acpi 5.0 */
>     {{"_LL_",     0,      0}},
>     {{"_MAF",     0,      0}},
>     {{"_MAX",     0,      0}},
>     {{"_MEM",     0,      0}},
>     {{"_MIF",     0,      0}},
>     {{"_MIN",     0,      0}},
> +    {{"_MOD",     0,      0}},  /* Acpi 5.0 */
>     {{"_MTP",     0,      0}},
> +    {{"_PAR",     0,      0}},  /* Acpi 5.0 */
> +    {{"_PHA",     0,      0}},  /* Acpi 5.0 */
> +    {{"_PIN",     0,      0}},  /* Acpi 5.0 */
> +    {{"_PPI",     0,      0}},  /* Acpi 5.0 */
> +    {{"_POL",     0,      0}},  /* Acpi 5.0 */
>     {{"_RBO",     0,      0}},
>     {{"_RBW",     0,      0}},
>     {{"_RNG",     0,      0}},
>     {{"_RT_",     0,      0}},  /* Acpi 3.0 */
>     {{"_RW_",     0,      0}},
> +    {{"_RXL",     0,      0}},  /* Acpi 5.0 */
>     {{"_SHR",     0,      0}},
>     {{"_SIZ",     0,      0}},
> +    {{"_SLV",     0,      0}},  /* Acpi 5.0 */
> +    {{"_SPE",     0,      0}},  /* Acpi 5.0 */
> +    {{"_STB",     0,      0}},  /* Acpi 5.0 */
>     {{"_TRA",     0,      0}},
>     {{"_TRS",     0,      0}},
>     {{"_TSF",     0,      0}},  /* Acpi 3.0 */
>     {{"_TTP",     0,      0}},
> +    {{"_TXL",     0,      0}},  /* Acpi 5.0 */
>     {{"_TYP",     0,      0}},
> +    {{"_VEN",     0,      0}},  /* Acpi 5.0 */
>     {{{0,0,0,0},  0,      0}}   /* Table terminator */
>  };
>
> @@ -730,6 +749,7 @@ ApCheckObjectType (
>         break;
>
>     case PARSEOP_PACKAGE:
> +    case PARSEOP_VAR_PACKAGE:
>         ReturnBtype = ACPI_RTYPE_PACKAGE;
>         break;
>
> @@ -889,4 +909,3 @@ ApGetExpectedTypes (
>         ThisRtype <<= 1;    /* Next Rtype */
>     }
>  }
> -
> diff --git a/src/acpica/source/compiler/aslresource.c b/src/acpica/source/compiler/aslresource.c
> index 116c083..9eb8baf 100644
> --- a/src/acpica/source/compiler/aslresource.c
> +++ b/src/acpica/source/compiler/aslresource.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -509,13 +509,14 @@ RsAllocateResourceNode (
>
>  /*******************************************************************************
>  *
> - * FUNCTION:    RsCreateBitField
> + * FUNCTION:    RsCreateResourceField
>  *
>  * PARAMETERS:  Op              - Resource field node
>  *              Name            - Name of the field (Used only to reference
>  *                                the field in the ASL, not in the AML)
>  *              ByteOffset      - Offset from the field start
>  *              BitOffset       - Additional bit offset
> + *              BitLength       - Number of bits in the field
>  *
>  * RETURN:      None, sets fields within the input node
>  *
> @@ -526,46 +527,20 @@ RsAllocateResourceNode (
>  ******************************************************************************/
>
>  void
> -RsCreateBitField (
> +RsCreateResourceField (
>     ACPI_PARSE_OBJECT       *Op,
>     char                    *Name,
>     UINT32                  ByteOffset,
> -    UINT32                  BitOffset)
> +    UINT32                  BitOffset,
> +    UINT32                  BitLength)
>  {
>
> -    Op->Asl.ExternalName      = Name;
> -    Op->Asl.Value.Integer     = ((UINT64) ByteOffset * 8) + BitOffset;
> -    Op->Asl.CompileFlags     |= (NODE_IS_RESOURCE_FIELD | NODE_IS_BIT_OFFSET);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION:    RsCreateByteField
> - *
> - * PARAMETERS:  Op              - Resource field node
> - *              Name            - Name of the field (Used only to reference
> - *                                the field in the ASL, not in the AML)
> - *              ByteOffset      - Offset from the field start
> - *
> - * RETURN:      None, sets fields within the input node
> - *
> - * DESCRIPTION: Utility function to generate a named byte field within a
> - *              resource descriptor.  Mark a node as 1) a field in a resource
> - *              descriptor, and 2) set the value to be a BYTE offset
> - *
> - ******************************************************************************/
> +    Op->Asl.ExternalName = Name;
> +    Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
>
> -void
> -RsCreateByteField (
> -    ACPI_PARSE_OBJECT       *Op,
> -    char                    *Name,
> -    UINT32                  ByteOffset)
> -{
>
> -    Op->Asl.ExternalName      = Name;
> -    Op->Asl.Value.Integer     = ByteOffset;
> -    Op->Asl.CompileFlags     |= NODE_IS_RESOURCE_FIELD;
> +    Op->Asl.Value.Tag.BitOffset = (ByteOffset * 8) + BitOffset;
> +    Op->Asl.Value.Tag.BitLength = BitLength;
>  }
>
>
> @@ -610,6 +585,29 @@ RsSetFlagBits (
>  }
>
>
> +void
> +RsSetFlagBits16 (
> +    UINT16                  *Flags,
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT8                   Position,
> +    UINT8                   DefaultBit)
> +{
> +
> +    if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
> +    {
> +        /* Use the default bit */
> +
> +        *Flags |= (DefaultBit << Position);
> +    }
> +    else
> +    {
> +        /* Use the bit specified in the initialization node */
> +
> +        *Flags |= (((UINT16) Op->Asl.Value.Integer) << Position);
> +    }
> +}
> +
> +
>  /*******************************************************************************
>  *
>  * FUNCTION:    RsCompleteNodeAndGetNext
> @@ -734,6 +732,11 @@ RsDoOneResourceDescriptor (
>                     CurrentByteOffset);
>         break;
>
> +    case PARSEOP_FIXEDDMA:
> +        Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp,
> +                    CurrentByteOffset);
> +        break;
> +
>     case PARSEOP_DWORDIO:
>         Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp,
>                     CurrentByteOffset);
> @@ -917,6 +920,31 @@ RsDoOneResourceDescriptor (
>                     CurrentByteOffset);
>         break;
>
> +    case PARSEOP_GPIO_INT:
> +        Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp,
> +                    CurrentByteOffset);
> +        break;
> +
> +    case PARSEOP_GPIO_IO:
> +        Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp,
> +                    CurrentByteOffset);
> +        break;
> +
> +    case PARSEOP_I2C_SERIALBUS:
> +        Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp,
> +                    CurrentByteOffset);
> +        break;
> +
> +    case PARSEOP_SPI_SERIALBUS:
> +        Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp,
> +                    CurrentByteOffset);
> +        break;
> +
> +    case PARSEOP_UART_SERIALBUS:
> +        Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp,
> +                    CurrentByteOffset);
> +        break;
> +
>     case PARSEOP_DEFAULT_ARG:
>         /* Just ignore any of these, they are used as fillers/placeholders */
>         break;
> @@ -1091,10 +1119,12 @@ RsDoResourceTemplate (
>     Op->Asl.ParseOpcode               = PARSEOP_BUFFER;
>     Op->Asl.AmlOpcode                 = AML_BUFFER_OP;
>     Op->Asl.CompileFlags              = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC;
> +    UtSetParseOpName (Op);
>
>     BufferLengthOp->Asl.ParseOpcode   = PARSEOP_INTEGER;
>     BufferLengthOp->Asl.Value.Integer = CurrentByteOffset;
>     (void) OpcSetOptimalIntegerSize (BufferLengthOp);
> +    UtSetParseOpName (BufferLengthOp);
>
>     BufferOp->Asl.ParseOpcode         = PARSEOP_RAW_DATA;
>     BufferOp->Asl.AmlOpcode           = AML_RAW_DATA_CHAIN;
> @@ -1102,8 +1132,7 @@ RsDoResourceTemplate (
>     BufferOp->Asl.AmlLength           = CurrentByteOffset;
>     BufferOp->Asl.Value.Buffer        = (UINT8 *) HeadRnode.Next;
>     BufferOp->Asl.CompileFlags       |= NODE_IS_RESOURCE_DATA;
> +    UtSetParseOpName (BufferOp);
>
>     return;
>  }
> -
> -
> diff --git a/src/acpica/source/compiler/aslrestype1.c b/src/acpica/source/compiler/aslrestype1.c
> index 0d0e6cc..5b92151 100644
> --- a/src/acpica/source/compiler/aslrestype1.c
> +++ b/src/acpica/source/compiler/aslrestype1.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -251,7 +251,7 @@ RsDoMemory24Descriptor (
>         case 1: /* Min Address */
>
>             Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -259,7 +259,7 @@ RsDoMemory24Descriptor (
>         case 2: /* Max Address */
>
>             Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -267,14 +267,14 @@ RsDoMemory24Descriptor (
>         case 3: /* Alignment */
>
>             Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment));
>             break;
>
>         case 4: /* Length */
>
>             Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -358,7 +358,7 @@ RsDoMemory32Descriptor (
>         case 1:  /* Min Address */
>
>             Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -366,7 +366,7 @@ RsDoMemory32Descriptor (
>         case 2: /* Max Address */
>
>             Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -374,7 +374,7 @@ RsDoMemory32Descriptor (
>         case 3: /* Alignment */
>
>             Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment));
>             AlignOp = InitializerOp;
>             break;
> @@ -382,7 +382,7 @@ RsDoMemory32Descriptor (
>         case 4: /* Length */
>
>             Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -462,14 +462,14 @@ RsDoMemory32FixedDescriptor (
>         case 1: /* Address */
>
>             Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address));
>             break;
>
>         case 2: /* Length */
>
>             Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
>             break;
>
> @@ -525,6 +525,10 @@ RsDoStartDependentDescriptor (
>     PreviousRnode = Rnode;
>     Descriptor = Rnode->Buffer;
>
> +    /* Increment offset past StartDependent descriptor */
> +
> +    CurrentByteOffset += sizeof (AML_RESOURCE_START_DEPENDENT);
> +
>     /* Descriptor has priority byte */
>
>     Descriptor->StartDpf.DescriptorType  = ACPI_RESOURCE_NAME_START_DEPENDENT |
> @@ -617,6 +621,10 @@ RsDoStartDependentNoPriDescriptor (
>                                       ASL_RDESC_ST_DEPEND_SIZE;
>     PreviousRnode = Rnode;
>
> +    /* Increment offset past StartDependentNoPri descriptor */
> +
> +    CurrentByteOffset += sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO);
> +
>     /* Process all child initialization nodes */
>
>     State = ACPI_RSTATE_START_DEPENDENT;
> diff --git a/src/acpica/source/compiler/aslrestype1i.c b/src/acpica/source/compiler/aslrestype1i.c
> index 491ae2f..8335e8f 100644
> --- a/src/acpica/source/compiler/aslrestype1i.c
> +++ b/src/acpica/source/compiler/aslrestype1i.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -125,6 +125,7 @@
>  * This module contains the I/O-related small resource descriptors:
>  *
>  * DMA
> + * FixedDMA
>  * FixedIO
>  * IO
>  * IRQ
> @@ -174,8 +175,8 @@ RsDoDmaDescriptor (
>         case 0: /* DMA type */
>
>             RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 5, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_DMATYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_DMATYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5, 2);
>             break;
>
>         case 1: /* Bus Master */
> @@ -188,8 +189,8 @@ RsDoDmaDescriptor (
>         case 2: /* Xfer Type (transfer width) */
>
>             RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 0, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_XFERTYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_XFERTYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0, 2);
>             break;
>
>         case 3: /* Name */
> @@ -254,6 +255,81 @@ RsDoDmaDescriptor (
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    RsDoFixedDmaDescriptor
> + *
> + * PARAMETERS:  Op                  - Parent resource descriptor parse node
> + *              CurrentByteOffset   - Offset into the resource template AML
> + *                                    buffer (to track references to the desc)
> + *
> + * RETURN:      Completed resource node
> + *
> + * DESCRIPTION: Construct a short "FixedDMA" descriptor
> + *
> + ******************************************************************************/
> +
> +ASL_RESOURCE_NODE *
> +RsDoFixedDmaDescriptor (
> +    ACPI_PARSE_OBJECT       *Op,
> +    UINT32                  CurrentByteOffset)
> +{
> +    AML_RESOURCE            *Descriptor;
> +    ACPI_PARSE_OBJECT       *InitializerOp;
> +    ASL_RESOURCE_NODE       *Rnode;
> +    UINT32                  i;
> +
> +
> +    InitializerOp = Op->Asl.Child;
> +    Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_DMA));
> +
> +    Descriptor = Rnode->Buffer;
> +    Descriptor->FixedDma.DescriptorType =
> +        ACPI_RESOURCE_NAME_FIXED_DMA | ASL_RDESC_FIXED_DMA_SIZE;
> +
> +    /* Process all child initialization nodes */
> +
> +    for (i = 0; InitializerOp; i++)
> +    {
> +        switch (i)
> +        {
> +        case 0: /* DMA Request Lines [WORD] (_DMA) */
> +
> +            Descriptor->FixedDma.RequestLines = (UINT16) InitializerOp->Asl.Value.Integer;
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_DMA,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.RequestLines));
> +            break;
> +
> +        case 1: /* DMA Channel [WORD] (_TYP) */
> +
> +            Descriptor->FixedDma.Channels = (UINT16) InitializerOp->Asl.Value.Integer;
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels));
> +            break;
> +
> +        case 2: /* Transfer Width [BYTE] (_SIZ) */
> +
> +            Descriptor->FixedDma.Width = (UINT8) InitializerOp->Asl.Value.Integer;
> +            RsCreateByteField (InitializerOp, ACPI_RESTAG_XFERTYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Width));
> +            break;
> +
> +        case 3: /* Descriptor Name (optional) */
> +
> +            UtAttachNamepathToOwner (Op, InitializerOp);
> +            break;
> +
> +        default:    /* Ignore any extra nodes */
> +            break;
> +        }
> +
> +        InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
> +    }
> +
> +    return (Rnode);
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    RsDoFixedIoDescriptor
>  *
>  * PARAMETERS:  Op                  - Parent resource descriptor parse node
> @@ -295,7 +371,7 @@ RsDoFixedIoDescriptor (
>
>             Descriptor->FixedIo.Address =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address));
>             AddressOp = InitializerOp;
>             break;
> @@ -386,7 +462,7 @@ RsDoIoDescriptor (
>
>             Descriptor->Io.Minimum =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -395,7 +471,7 @@ RsDoIoDescriptor (
>
>             Descriptor->Io.Maximum =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -552,7 +628,7 @@ RsDoIrqDescriptor (
>
>                 /* Create a named field at the start of the list */
>
> -                RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> +                RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
>                     CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask));
>             }
>             break;
> @@ -652,7 +728,7 @@ RsDoIrqNoFlagsDescriptor (
>
>                 /* Create a named field at the start of the list */
>
> -                RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> +                RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
>                     CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask));
>             }
>             break;
> diff --git a/src/acpica/source/compiler/aslrestype2.c b/src/acpica/source/compiler/aslrestype2.c
> index 7b3d869..f0de854 100644
> --- a/src/acpica/source/compiler/aslrestype2.c
> +++ b/src/acpica/source/compiler/aslrestype2.c
> @@ -1,4 +1,3 @@
> -
>  /******************************************************************************
>  *
>  * Module Name: aslrestype2 - Miscellaneous Large resource descriptors
> @@ -9,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -192,7 +191,7 @@ RsDoGeneralRegisterDescriptor (
>         case 3: /* Register Address */
>
>             Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESS,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address));
>             break;
>
> @@ -426,7 +425,7 @@ RsDoInterruptDescriptor (
>
>                 /* Create a named field at the start of the list */
>
> -                RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
> +                RsCreateDwordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
>                     CurrentByteOffset +
>                     ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]));
>             }
> diff --git a/src/acpica/source/compiler/aslrestype2d.c b/src/acpica/source/compiler/aslrestype2d.c
> index dc2482d..1ca0f2d 100644
> --- a/src/acpica/source/compiler/aslrestype2d.c
> +++ b/src/acpica/source/compiler/aslrestype2d.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -216,15 +216,15 @@ RsDoDwordIoDescriptor (
>         case 4: /* Range Type */
>
>             RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 3);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0, 2);
>             break;
>
>         case 5: /* Address Granularity */
>
>             Descriptor->Address32.Granularity =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -233,7 +233,7 @@ RsDoDwordIoDescriptor (
>
>             Descriptor->Address32.Minimum =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -242,7 +242,7 @@ RsDoDwordIoDescriptor (
>
>             Descriptor->Address32.Maximum =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -251,7 +251,7 @@ RsDoDwordIoDescriptor (
>
>             Descriptor->Address32.TranslationOffset =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
>             break;
>
> @@ -259,7 +259,7 @@ RsDoDwordIoDescriptor (
>
>             Descriptor->Address32.AddressLength =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -448,8 +448,8 @@ RsDoDwordMemoryDescriptor (
>         case 4: /* Memory Type */
>
>             RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 1, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1, 2);
>             break;
>
>         case 5: /* Read/Write Type */
> @@ -463,7 +463,7 @@ RsDoDwordMemoryDescriptor (
>
>             Descriptor->Address32.Granularity =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -472,7 +472,7 @@ RsDoDwordMemoryDescriptor (
>
>             Descriptor->Address32.Minimum =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -481,7 +481,7 @@ RsDoDwordMemoryDescriptor (
>
>             Descriptor->Address32.Maximum =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -490,7 +490,7 @@ RsDoDwordMemoryDescriptor (
>
>             Descriptor->Address32.TranslationOffset =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
>             break;
>
> @@ -498,7 +498,7 @@ RsDoDwordMemoryDescriptor (
>
>             Descriptor->Address32.AddressLength =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -560,8 +560,8 @@ RsDoDwordMemoryDescriptor (
>         case 14: /* Address Range */
>
>             RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 3, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3, 2);
>             break;
>
>         case 15: /* Type */
> @@ -695,7 +695,7 @@ RsDoDwordSpaceDescriptor (
>
>             Descriptor->Address32.Granularity =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -704,7 +704,7 @@ RsDoDwordSpaceDescriptor (
>
>             Descriptor->Address32.Minimum =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -713,7 +713,7 @@ RsDoDwordSpaceDescriptor (
>
>             Descriptor->Address32.Maximum =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -722,7 +722,7 @@ RsDoDwordSpaceDescriptor (
>
>             Descriptor->Address32.TranslationOffset =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
>             break;
>
> @@ -730,7 +730,7 @@ RsDoDwordSpaceDescriptor (
>
>             Descriptor->Address32.AddressLength =
>                 (UINT32) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> diff --git a/src/acpica/source/compiler/aslrestype2e.c b/src/acpica/source/compiler/aslrestype2e.c
> index 89da933..e5fff47 100644
> --- a/src/acpica/source/compiler/aslrestype2e.c
> +++ b/src/acpica/source/compiler/aslrestype2e.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -208,14 +208,14 @@ RsDoExtendedIoDescriptor (
>         case 4: /* Range Type */
>
>             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 3);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0, 2);
>             break;
>
>         case 5: /* Address Granularity */
>
>             Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
>             GranOp = InitializerOp;
>            break;
> @@ -223,7 +223,7 @@ RsDoExtendedIoDescriptor (
>         case 6: /* Address Min */
>
>             Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -231,7 +231,7 @@ RsDoExtendedIoDescriptor (
>         case 7: /* Address Max */
>
>             Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -239,14 +239,14 @@ RsDoExtendedIoDescriptor (
>         case 8: /* Translation Offset */
>
>             Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
>             break;
>
>         case 9: /* Address Length */
>
>             Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -254,7 +254,7 @@ RsDoExtendedIoDescriptor (
>         case 10: /* Type-Specific Attributes */
>
>             Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
>             break;
>
> @@ -381,8 +381,8 @@ RsDoExtendedMemoryDescriptor (
>         case 4: /* Memory Type */
>
>             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 1, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1, 2);
>             break;
>
>         case 5: /* Read/Write Type */
> @@ -395,7 +395,7 @@ RsDoExtendedMemoryDescriptor (
>         case 6: /* Address Granularity */
>
>             Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -403,7 +403,7 @@ RsDoExtendedMemoryDescriptor (
>         case 7: /* Min Address */
>
>             Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -411,7 +411,7 @@ RsDoExtendedMemoryDescriptor (
>         case 8: /* Max Address */
>
>             Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -419,14 +419,14 @@ RsDoExtendedMemoryDescriptor (
>         case 9: /* Translation Offset */
>
>             Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
>             break;
>
>         case 10: /* Address Length */
>
>             Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -434,7 +434,7 @@ RsDoExtendedMemoryDescriptor (
>         case 11: /* Type-Specific Attributes */
>
>             Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
>             break;
>
> @@ -447,8 +447,8 @@ RsDoExtendedMemoryDescriptor (
>         case 13: /* Address Range */
>
>             RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 3, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3, 2);
>             break;
>
>         case 14: /* Type */
> @@ -573,7 +573,7 @@ RsDoExtendedSpaceDescriptor (
>         case 6: /* Address Granularity */
>
>             Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -581,7 +581,7 @@ RsDoExtendedSpaceDescriptor (
>         case 7: /* Min Address */
>
>             Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -589,7 +589,7 @@ RsDoExtendedSpaceDescriptor (
>         case 8: /* Max Address */
>
>             Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -597,14 +597,14 @@ RsDoExtendedSpaceDescriptor (
>         case 9: /* Translation Offset */
>
>             Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
>             break;
>
>         case 10: /* Address Length */
>
>             Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -612,7 +612,7 @@ RsDoExtendedSpaceDescriptor (
>         case 11: /* Type-Specific Attributes */
>
>             Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
>             break;
>
> diff --git a/src/acpica/source/compiler/aslrestype2q.c b/src/acpica/source/compiler/aslrestype2q.c
> index e652890..65c242a 100644
> --- a/src/acpica/source/compiler/aslrestype2q.c
> +++ b/src/acpica/source/compiler/aslrestype2q.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -216,14 +216,14 @@ RsDoQwordIoDescriptor (
>         case 4: /* Range Type */
>
>             RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 3);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0, 2);
>             break;
>
>         case 5: /* Address Granularity */
>
>             Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -231,7 +231,7 @@ RsDoQwordIoDescriptor (
>         case 6: /* Address Min */
>
>             Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -239,7 +239,7 @@ RsDoQwordIoDescriptor (
>         case 7: /* Address Max */
>
>             Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -254,7 +254,7 @@ RsDoQwordIoDescriptor (
>         case 9: /* Address Length */
>
>             Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -438,8 +438,8 @@ RsDoQwordMemoryDescriptor (
>         case 4: /* Memory Type */
>
>             RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 1, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1, 2);
>             break;
>
>         case 5: /* Read/Write Type */
> @@ -452,7 +452,7 @@ RsDoQwordMemoryDescriptor (
>         case 6: /* Address Granularity */
>
>             Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -460,7 +460,7 @@ RsDoQwordMemoryDescriptor (
>         case 7: /* Min Address */
>
>             Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -468,7 +468,7 @@ RsDoQwordMemoryDescriptor (
>         case 8: /* Max Address */
>
>             Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -476,14 +476,14 @@ RsDoQwordMemoryDescriptor (
>         case 9: /* Translation Offset */
>
>             Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
>             break;
>
>         case 10: /* Address Length */
>
>             Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -545,8 +545,8 @@ RsDoQwordMemoryDescriptor (
>         case 14: /* Address Range */
>
>             RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 3, 0);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3, 2);
>             break;
>
>         case 15: /* Type */
> @@ -679,7 +679,7 @@ RsDoQwordSpaceDescriptor (
>         case 6: /* Address Granularity */
>
>             Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -687,7 +687,7 @@ RsDoQwordSpaceDescriptor (
>         case 7: /* Min Address */
>
>             Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -695,7 +695,7 @@ RsDoQwordSpaceDescriptor (
>         case 8: /* Max Address */
>
>             Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -703,14 +703,14 @@ RsDoQwordSpaceDescriptor (
>         case 9: /* Translation Offset */
>
>             Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
>             break;
>
>         case 10: /* Address Length */
>
>             Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> diff --git a/src/acpica/source/compiler/aslrestype2w.c b/src/acpica/source/compiler/aslrestype2w.c
> index c9d98fe..79d7bcc 100644
> --- a/src/acpica/source/compiler/aslrestype2w.c
> +++ b/src/acpica/source/compiler/aslrestype2w.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -216,14 +216,14 @@ RsDoWordIoDescriptor (
>         case 4: /* Range Type */
>
>             RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 0, 3);
> -            RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> -                CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0);
> +            RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
> +                CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0, 2);
>             break;
>
>         case 5: /* Address Granularity */
>
>             Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -231,7 +231,7 @@ RsDoWordIoDescriptor (
>         case 6: /* Address Min */
>
>             Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -239,7 +239,7 @@ RsDoWordIoDescriptor (
>         case 7: /* Address Max */
>
>             Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -247,14 +247,14 @@ RsDoWordIoDescriptor (
>         case 8: /* Translation Offset */
>
>             Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
>             break;
>
>         case 9: /* Address Length */
>
>             Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -439,7 +439,7 @@ RsDoWordBusNumberDescriptor (
>
>             Descriptor->Address16.Granularity =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -448,7 +448,7 @@ RsDoWordBusNumberDescriptor (
>
>             Descriptor->Address16.Minimum =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -457,7 +457,7 @@ RsDoWordBusNumberDescriptor (
>
>             Descriptor->Address16.Maximum =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -466,7 +466,7 @@ RsDoWordBusNumberDescriptor (
>
>             Descriptor->Address16.TranslationOffset =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
>             break;
>
> @@ -474,7 +474,7 @@ RsDoWordBusNumberDescriptor (
>
>             Descriptor->Address16.AddressLength =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> @@ -656,7 +656,7 @@ RsDoWordSpaceDescriptor (
>
>             Descriptor->Address16.Granularity =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
>             GranOp = InitializerOp;
>             break;
> @@ -665,7 +665,7 @@ RsDoWordSpaceDescriptor (
>
>             Descriptor->Address16.Minimum =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
>             MinOp = InitializerOp;
>             break;
> @@ -674,7 +674,7 @@ RsDoWordSpaceDescriptor (
>
>             Descriptor->Address16.Maximum =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
>             MaxOp = InitializerOp;
>             break;
> @@ -683,7 +683,7 @@ RsDoWordSpaceDescriptor (
>
>             Descriptor->Address16.TranslationOffset =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
>             break;
>
> @@ -691,7 +691,7 @@ RsDoWordSpaceDescriptor (
>
>             Descriptor->Address16.AddressLength =
>                 (UINT16) InitializerOp->Asl.Value.Integer;
> -            RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
> +            RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
>                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
>             LengthOp = InitializerOp;
>             break;
> diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
> index 6c3ba54..49b25d9 100644
> --- a/src/acpica/source/compiler/aslstartup.c
> +++ b/src/acpica/source/compiler/aslstartup.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -167,6 +167,8 @@ AslInitializeGlobals (
>     Gbl_LogicalLineNumber = 1;
>     Gbl_CurrentLineOffset = 0;
>     Gbl_InputFieldCount = 0;
> +    Gbl_InputByteCount = 0;
> +    Gbl_NsLookupCount = 0;
>     Gbl_LineBufPtr = Gbl_CurrentLineBuffer;
>
>     Gbl_ErrorLog = NULL;
> @@ -174,17 +176,26 @@ AslInitializeGlobals (
>     Gbl_Signature = NULL;
>     Gbl_FileType = 0;
>
> +    TotalExecutableOpcodes = 0;
> +    TotalNamedObjects = 0;
> +    TotalKeywords = 0;
> +    TotalParseNodes = 0;
> +    TotalMethods = 0;
> +    TotalAllocations = 0;
> +    TotalAllocated = 0;
> +    TotalFolds = 0;
> +
>     AslGbl_NextEvent = 0;
>     for (i = 0; i < ASL_NUM_REPORT_LEVELS; i++)
>     {
>         Gbl_ExceptionCount[i] = 0;
>     }
>
> -    Gbl_Files[ASL_FILE_AML_OUTPUT].Filename = NULL;
> -    Gbl_Files[ASL_FILE_AML_OUTPUT].Handle = NULL;
> -
> -    Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename = NULL;
> -    Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle = NULL;
> +    for (i = ASL_FILE_INPUT; i <= ASL_MAX_FILE_TYPE; i++)
> +    {
> +        Gbl_Files[i].Handle = NULL;
> +        Gbl_Files[i].Filename = NULL;
> +    }
>  }
>
>
> @@ -354,11 +365,12 @@ AslDoOneFile (
>     ACPI_STATUS             Status;
>
>
> -    Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
> -
> -    /* Re-initialize "some" compiler globals */
> +    /* Re-initialize "some" compiler/preprocessor globals */
>
>     AslInitializeGlobals ();
> +    PrInitializeGlobals ();
> +
> +    Gbl_Files[ASL_FILE_INPUT].Filename = Filename;
>
>     /*
>      * AML Disassembly (Optional)
> @@ -464,17 +476,33 @@ AslDoOneFile (
>     case ASL_INPUT_TYPE_ASCII_DATA:
>
>         Status = DtDoCompile ();
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
>
>         if (Gbl_Signature)
>         {
>             ACPI_FREE (Gbl_Signature);
>             Gbl_Signature = NULL;
>         }
> +
> +        /* Check if any errors occurred during compile */
> +
> +        Status = AslCheckForErrorExit ();
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        /* Cleanup (for next source file) and exit */
> +
>         AeClearErrorLog ();
> +        PrTerminatePreprocessor ();
>         return (Status);
>
>     /*
> -     * ASL Compilation (Optional)
> +     * ASL Compilation
>      */
>     case ASL_INPUT_TYPE_ASCII_ASL:
>
> @@ -486,19 +514,21 @@ AslDoOneFile (
>             return (Status);
>         }
>
> -        Status = CmDoCompile ();
> +        (void) CmDoCompile ();
>         (void) AcpiTerminate ();
>
> -        /*
> -         * Return non-zero exit code if there have been errors, unless the
> -         * global ignore error flag has been set
> -         */
> -        if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors))
> +        /* Check if any errors occurred during compile */
> +
> +        Status = AslCheckForErrorExit ();
> +        if (ACPI_FAILURE (Status))
>         {
> -            return (AE_ERROR);
> +            return (Status);
>         }
>
> +        /* Cleanup (for next source file) and exit */
> +
>         AeClearErrorLog ();
> +        PrTerminatePreprocessor ();
>         return (AE_OK);
>
>     case ASL_INPUT_TYPE_BINARY:
> @@ -583,3 +613,47 @@ AslDoOnePathname (
>     return (Status);
>  }
>
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    AslCheckForErrorExit
> + *
> + * PARAMETERS:  None. Examines global exception count array
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Determine if compiler should abort with error status
> + *
> + ******************************************************************************/
> +
> +ACPI_STATUS
> +AslCheckForErrorExit (
> +    void)
> +{
> +
> +    /*
> +     * Return non-zero exit code if there have been errors, unless the
> +     * global ignore error flag has been set
> +     */
> +    if (!Gbl_IgnoreErrors)
> +    {
> +        if (Gbl_ExceptionCount[ASL_ERROR] > 0)
> +        {
> +            return (AE_ERROR);
> +        }
> +
> +        /* Optionally treat warnings as errors */
> +
> +        if (Gbl_WarningsAsErrors)
> +        {
> +            if ((Gbl_ExceptionCount[ASL_WARNING] > 0)  ||
> +                (Gbl_ExceptionCount[ASL_WARNING2] > 0) ||
> +                (Gbl_ExceptionCount[ASL_WARNING3] > 0))
> +            {
> +                return (AE_ERROR);
> +            }
> +        }
> +    }
> +
> +    return (AE_OK);
> +}
> diff --git a/src/acpica/source/compiler/aslstubs.c b/src/acpica/source/compiler/aslstubs.c
> index 69d30b0..bc8703c 100644
> --- a/src/acpica/source/compiler/aslstubs.c
> +++ b/src/acpica/source/compiler/aslstubs.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -200,13 +200,6 @@ AcpiDsStoreObjectToLocal (
>  }
>
>  ACPI_STATUS
> -AcpiEvDeleteGpeBlock (
> -    ACPI_GPE_BLOCK_INFO     *GpeBlock)
> -{
> -    return (AE_OK);
> -}
> -
> -ACPI_STATUS
>  AcpiEvQueueNotifyRequest (
>     ACPI_NAMESPACE_NODE     *Node,
>     UINT32                  NotifyValue)
> @@ -221,6 +214,14 @@ AcpiEvIsNotifyObject (
>     return (FALSE);
>  }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +ACPI_STATUS
> +AcpiEvDeleteGpeBlock (
> +    ACPI_GPE_BLOCK_INFO     *GpeBlock)
> +{
> +    return (AE_OK);
> +}
> +
>  ACPI_STATUS
>  AcpiEvAcquireGlobalLock (
>     UINT16                  Timeout)
> @@ -234,6 +235,7 @@ AcpiEvReleaseGlobalLock (
>  {
>     return (AE_OK);
>  }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>  ACPI_STATUS
>  AcpiEvInitializeRegion (
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index b589040..0710b40 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -470,6 +470,7 @@ TrDoSwitch (
>     ACPI_PARSE_OBJECT       *MethodOp;
>     ACPI_PARSE_OBJECT       *StoreOp;
>     ACPI_PARSE_OBJECT       *BreakOp;
> +    ACPI_PARSE_OBJECT       *BufferOp;
>     char                    *PredicateValueName;
>     UINT16                  Index;
>     UINT32                  Btype;
> @@ -719,6 +720,7 @@ TrDoSwitch (
>
>     Predicate = StartNode->Asl.Child;
>     NewOp = TrCreateLeafNode (PARSEOP_NAME);
> +    TrAmlInitLineNumbers (NewOp, StartNode);
>
>     /* Find the parent method */
>
> @@ -762,6 +764,7 @@ TrDoSwitch (
>
>     NewOp2 = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
>                 (UINT64) ACPI_TO_INTEGER (PredicateValueName));
> +    TrAmlInitLineNumbers (NewOp2, NewOp);
>     NewOp2->Asl.CompileFlags |= NODE_IS_NAME_DECLARATION;
>     NewOp->Asl.Child  = NewOp2;
>
> @@ -772,21 +775,27 @@ TrDoSwitch (
>     case ACPI_BTYPE_INTEGER:
>         NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_ZERO,
>                                 (UINT64) 0);
> +        TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
>         break;
>
>     case ACPI_BTYPE_STRING:
>         NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
>                                 (UINT64) ACPI_TO_INTEGER (""));
> +        TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
>         break;
>
>     case ACPI_BTYPE_BUFFER:
>         (void) TrLinkPeerNode (NewOp2, TrCreateValuedLeafNode (PARSEOP_BUFFER,
>                                     (UINT64) 0));
>         Next = NewOp2->Asl.Next;
> +        TrAmlInitLineNumbers (Next, NewOp2);
>         (void) TrLinkChildren (Next, 1, TrCreateValuedLeafNode (PARSEOP_ZERO,
>                                     (UINT64) 1));
> -        (void) TrLinkPeerNode (Next->Asl.Child,
> -            TrCreateValuedLeafNode (PARSEOP_DEFAULT_ARG, (UINT64) 0));
> +        TrAmlInitLineNumbers (Next->Asl.Child, Next);
> +
> +        BufferOp = TrCreateValuedLeafNode (PARSEOP_DEFAULT_ARG, (UINT64) 0);
> +        TrAmlInitLineNumbers (BufferOp, Next->Asl.Child);
> +        (void) TrLinkPeerNode (Next->Asl.Child, BufferOp);
>
>         TrAmlSetSubtreeParent (Next->Asl.Child, Next);
>         break;
> @@ -805,6 +814,7 @@ TrDoSwitch (
>      */
>     TrAmlInitNode (StartNode, PARSEOP_WHILE);
>     NewOp = TrCreateLeafNode (PARSEOP_ONE);
> +    TrAmlInitLineNumbers (NewOp, StartNode);
>     NewOp->Asl.Next = Predicate->Asl.Next;
>     NewOp->Asl.Parent = StartNode;
>     StartNode->Asl.Child = NewOp;
> @@ -812,6 +822,7 @@ TrDoSwitch (
>     /* Create a Store() node */
>
>     StoreOp = TrCreateLeafNode (PARSEOP_STORE);
> +    TrAmlInitLineNumbers (StoreOp, NewOp);
>     StoreOp->Asl.Parent = StartNode;
>     TrAmlInsertPeer (NewOp, StoreOp);
>
> @@ -822,6 +833,7 @@ TrDoSwitch (
>
>     NewOp = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
>                 (UINT64) ACPI_TO_INTEGER (PredicateValueName));
> +    TrAmlInitLineNumbers (NewOp, StoreOp);
>     NewOp->Asl.Parent    = StoreOp;
>     Predicate->Asl.Next  = NewOp;
>
> @@ -834,6 +846,7 @@ TrDoSwitch (
>     }
>
>     BreakOp = TrCreateLeafNode (PARSEOP_BREAK);
> +    TrAmlInitLineNumbers (BreakOp, NewOp);
>     BreakOp->Asl.Parent = StartNode;
>     TrAmlInsertPeer (Conditional, BreakOp);
>  }
> diff --git a/src/acpica/source/compiler/asltree.c b/src/acpica/source/compiler/asltree.c
> index 88b33c3..f7a5fd7 100644
> --- a/src/acpica/source/compiler/asltree.c
> +++ b/src/acpica/source/compiler/asltree.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -117,6 +117,7 @@
>
>  #include "aslcompiler.h"
>  #include "aslcompiler.y.h"
> +#include "acapps.h"
>  #include <time.h>
>
>  #define _COMPONENT          ACPI_COMPILER
> @@ -359,9 +360,6 @@ TrGetNodeFlagName (
>     case NODE_METHOD_TYPED:
>         return ("NODE_METHOD_TYPED");
>
> -    case NODE_IS_BIT_OFFSET:
> -        return ("NODE_IS_BIT_OFFSET");
> -
>     case NODE_COMPILE_TIME_CONST:
>         return ("NODE_COMPILE_TIME_CONST");
>
> @@ -500,6 +498,8 @@ TrCreateConstantLeafNode (
>     time_t                  CurrentTime;
>     char                    *StaticTimeString;
>     char                    *TimeString;
> +    char                    *Path;
> +    char                    *Filename;
>
>
>     switch (ParseOpcode)
> @@ -509,7 +509,7 @@ TrCreateConstantLeafNode (
>         Op->Asl.Value.Integer = Op->Asl.LineNumber;
>         break;
>
> -    case PARSEOP___FILE__:
> +    case PARSEOP___PATH__:
>         Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
>
>         /* Op.Asl.Filename contains the full pathname to the file */
> @@ -517,7 +517,17 @@ TrCreateConstantLeafNode (
>         Op->Asl.Value.String = Op->Asl.Filename;
>         break;
>
> -   case PARSEOP___DATE__:
> +    case PARSEOP___FILE__:
> +        Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
> +
> +        /* Get the simple filename from the full path */
> +
> +        FlSplitInputPathname (Op->Asl.Filename, &Path, &Filename);
> +        ACPI_FREE (Path);
> +        Op->Asl.Value.String = Filename;
> +        break;
> +
> +    case PARSEOP___DATE__:
>         Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
>
>         /* Get a copy of the current time */
> diff --git a/src/acpica/source/compiler/asltypes.h b/src/acpica/source/compiler/asltypes.h
> index 64e0c60..f208202 100644
> --- a/src/acpica/source/compiler/asltypes.h
> +++ b/src/acpica/source/compiler/asltypes.h
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -140,7 +140,7 @@
>  #define NODE_METHOD_SOME_NO_RETVAL  0x00000200
>  #define NODE_RESULT_NOT_USED        0x00000400
>  #define NODE_METHOD_TYPED           0x00000800
> -#define NODE_IS_BIT_OFFSET          0x00001000
> +#define NODE_UNUSED_FLAG            0x00001000
>  #define NODE_COMPILE_TIME_CONST     0x00002000
>  #define NODE_IS_TERM_ARG            0x00004000
>  #define NODE_WAS_ONES_OP            0x00008000
> @@ -216,15 +216,18 @@ typedef struct asl_file_status
>  } ASL_FILE_STATUS;
>
>
> -/* File types */
> -
> +/*
> + * File types. Note: Any changes to this table must also be reflected
> + * in the AslFileTypeNames array.
> + */
>  typedef enum
>  {
>     ASL_FILE_STDOUT             = 0,
>     ASL_FILE_STDERR,
> -    ASL_FILE_INPUT,
> +    ASL_FILE_INPUT,             /* Don't move these first 3 file types */
>     ASL_FILE_AML_OUTPUT,
>     ASL_FILE_SOURCE_OUTPUT,
> +    ASL_FILE_PREPROCESSOR,
>     ASL_FILE_LISTING_OUTPUT,
>     ASL_FILE_HEX_OUTPUT,
>     ASL_FILE_NAMESPACE_OUTPUT,
> @@ -237,7 +240,7 @@ typedef enum
>  } ASL_FILE_TYPES;
>
>
> -#define ASL_MAX_FILE_TYPE       12
> +#define ASL_MAX_FILE_TYPE       13
>  #define ASL_NUM_FILES           (ASL_MAX_FILE_TYPE + 1)
>
>
> @@ -260,6 +263,7 @@ typedef struct asl_error_msg
>     char                        *Message;
>     struct asl_error_msg        *Next;
>     char                        *Filename;
> +    char                        *SourceLine;
>     UINT32                      FilenameLength;
>     UINT8                       MessageId;
>     UINT8                       Level;
> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
> index c9a7c96..8a7dbba 100644
> --- a/src/acpica/source/compiler/aslutils.c
> +++ b/src/acpica/source/compiler/aslutils.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -125,11 +125,32 @@
>  #define _COMPONENT          ACPI_COMPILER
>         ACPI_MODULE_NAME    ("aslutils")
>
> +
>  char                        AslHexLookup[] =
>  {
>     '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
>  };
>
> +/* Table below must match ASL_FILE_TYPES in asltypes.h */
> +
> +static const char       *AslFileTypeNames [ASL_NUM_FILES] =
> +{
> +    "stdout:       ",
> +    "stderr:       ",
> +    "Table Input:  ",
> +    "Binary Output:",
> +    "Source Output:",
> +    "Preprocessor: ",
> +    "Listing File: ",
> +    "Hex Dump:     ",
> +    "Namespace:    ",
> +    "Debug File:   ",
> +    "ASM Source:   ",
> +    "C Source:     ",
> +    "ASM Include:  ",
> +    "C Include:    "
> +};
> +
>
>  /* Local prototypes */
>
> @@ -523,35 +544,40 @@ void
>  UtDisplaySummary (
>     UINT32                  FileId)
>  {
> +    UINT32                  i;
> +
>
>     if (FileId != ASL_FILE_STDOUT)
>     {
>         /* Compiler name and version number */
>
> -        FlPrintFile (FileId, "%s version %X%s [%s]\n",
> +        FlPrintFile (FileId, "%s version %X%s [%s]\n\n",
>             ASL_COMPILER_NAME, (UINT32) ACPI_CA_VERSION, ACPI_WIDTH, __DATE__);
>     }
>
> +    /* Summary of main input and output files */
> +
>     if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
>     {
>         FlPrintFile (FileId,
> -            "Table Input:   %s - %u lines, %u bytes, %u fields\n",
> +            "%-14s %s - %u lines, %u bytes, %u fields\n",
> +            "Table Input:",
>             Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
>             Gbl_InputByteCount, Gbl_InputFieldCount);
>
>         if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
>         {
>             FlPrintFile (FileId,
> -                "Binary Output: %s - %u bytes\n\n",
> +                "%-14s %s - %u bytes\n",
> +                "Binary Output:",
>                 Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength);
>         }
>     }
>     else
>     {
> -        /* Input/Output summary */
> -
>         FlPrintFile (FileId,
> -            "ASL Input:  %s - %u lines, %u bytes, %u keywords\n",
> +            "%-14s %s - %u lines, %u bytes, %u keywords\n",
> +            "ASL Input:",
>             Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
>             Gbl_InputByteCount, TotalKeywords);
>
> @@ -560,16 +586,45 @@ UtDisplaySummary (
>         if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
>         {
>             FlPrintFile (FileId,
> -                "AML Output: %s - %u bytes, %u named objects, %u executable opcodes\n\n",
> +                "%-14s %s - %u bytes, %u named objects, %u executable opcodes\n",
> +                "AML Output:",
>                 Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength,
>                 TotalNamedObjects, TotalExecutableOpcodes);
>         }
>     }
>
> +    /* Display summary of any optional files */
> +
> +    for (i = ASL_FILE_SOURCE_OUTPUT; i <= ASL_MAX_FILE_TYPE; i++)
> +    {
> +        if (!Gbl_Files[i].Filename || !Gbl_Files[i].Handle)
> +        {
> +            continue;
> +        }
> +
> +        /* .SRC is a temp file unless specifically requested */
> +
> +        if ((i == ASL_FILE_SOURCE_OUTPUT) && (!Gbl_SourceOutputFlag))
> +        {
> +            continue;
> +        }
> +
> +        /* .I is a temp file unless specifically requested */
> +
> +        if ((i == ASL_FILE_PREPROCESSOR) && (!Gbl_PreprocessorOutputFlag))
> +        {
> +            continue;
> +        }
> +
> +        FlPrintFile (FileId, "%14s %s - %u bytes\n",
> +            AslFileTypeNames [i],
> +            Gbl_Files[i].Filename, FlGetFileSize (i));
> +    }
> +
>     /* Error summary */
>
>     FlPrintFile (FileId,
> -        "Compilation complete. %u Errors, %u Warnings, %u Remarks",
> +        "\nCompilation complete. %u Errors, %u Warnings, %u Remarks",
>         Gbl_ExceptionCount[ASL_ERROR],
>         Gbl_ExceptionCount[ASL_WARNING] +
>             Gbl_ExceptionCount[ASL_WARNING2] +
> diff --git a/src/acpica/source/compiler/asluuid.c b/src/acpica/source/compiler/asluuid.c
> index ca6f089..93d56a3 100644
> --- a/src/acpica/source/compiler/asluuid.c
> +++ b/src/acpica/source/compiler/asluuid.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/aslwalks.c b/src/acpica/source/compiler/aslwalks.c
> index ae1716a..ac483b8 100644
> --- a/src/acpica/source/compiler/aslwalks.c
> +++ b/src/acpica/source/compiler/aslwalks.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -1104,6 +1104,7 @@ AnOtherSemanticAnalysisWalkBegin (
>     ACPI_PARSE_OBJECT       *ArgNode;
>     ACPI_PARSE_OBJECT       *PrevArgNode = NULL;
>     const ACPI_OPCODE_INFO  *OpInfo;
> +    ACPI_NAMESPACE_NODE     *Node;
>
>
>     OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
> @@ -1228,6 +1229,78 @@ AnOtherSemanticAnalysisWalkBegin (
>         }
>         break;
>
> +    case PARSEOP_CONNECTION:
> +        /*
> +         * Ensure that the referenced operation region has the correct SPACE_ID.
> +         * From the grammar/parser, we know the parent is a FIELD definition.
> +         */
> +        ArgNode = Op->Asl.Parent;       /* Field definition */
> +        ArgNode = ArgNode->Asl.Child;   /* First child is the OpRegion Name */
> +        Node = ArgNode->Asl.Node;       /* OpRegion namespace node */
> +
> +        ArgNode = Node->Op;             /* OpRegion definition */
> +        ArgNode = ArgNode->Asl.Child;   /* First child is the OpRegion Name */
> +        ArgNode = ArgNode->Asl.Next;    /* Next peer is the SPACE_ID (what we want) */
> +
> +        /*
> +         * The Connection() operator is only valid for the following operation
> +         * region SpaceIds: GeneralPurposeIo and GenericSerialBus.
> +         */
> +        if ((ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GPIO) &&
> +            (ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GSBUS))
> +        {
> +            AslError (ASL_ERROR, ASL_MSG_CONNECTION_INVALID, Op, NULL);
> +        }
> +        break;
> +
> +    case PARSEOP_FIELD:
> +        /*
> +         * Ensure that fields for GeneralPurposeIo and GenericSerialBus
> +         * contain at least one Connection() operator
> +         */
> +        ArgNode = Op->Asl.Child;        /* 1st child is the OpRegion Name */
> +        Node = ArgNode->Asl.Node;       /* OpRegion namespace node */
> +        if (!Node)
> +        {
> +            break;
> +        }
> +
> +        ArgNode = Node->Op;             /* OpRegion definition */
> +        ArgNode = ArgNode->Asl.Child;   /* First child is the OpRegion Name */
> +        ArgNode = ArgNode->Asl.Next;    /* Next peer is the SPACE_ID (what we want) */
> +
> +        /* We are only interested in GeneralPurposeIo and GenericSerialBus */
> +
> +        if ((ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GPIO) &&
> +            (ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GSBUS))
> +        {
> +            break;
> +        }
> +
> +        ArgNode = Op->Asl.Child;        /* 1st child is the OpRegion Name */
> +        ArgNode = ArgNode->Asl.Next;    /* AccessType */
> +        ArgNode = ArgNode->Asl.Next;    /* LockRule */
> +        ArgNode = ArgNode->Asl.Next;    /* UpdateRule */
> +        ArgNode = ArgNode->Asl.Next;    /* Start of FieldUnitList */
> +
> +        /* Walk the FieldUnitList */
> +
> +        while (ArgNode)
> +        {
> +            if (ArgNode->Asl.ParseOpcode == PARSEOP_CONNECTION)
> +            {
> +                break;
> +            }
> +            else if (ArgNode->Asl.ParseOpcode == PARSEOP_NAMESEG)
> +            {
> +                AslError (ASL_ERROR, ASL_MSG_CONNECTION_MISSING, ArgNode, NULL);
> +                break;
> +            }
> +
> +            ArgNode = ArgNode->Asl.Next;
> +        }
> +        break;
> +
>     default:
>         break;
>     }
> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
> index 86264fd..6c937d2 100644
> --- a/src/acpica/source/compiler/dtcompile.c
> +++ b/src/acpica/source/compiler/dtcompile.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -173,6 +173,17 @@ DtDoCompile (
>         return (Status);
>     }
>
> +    /* Preprocessor */
> +
> +    Event = UtBeginEvent ("Preprocess input file");
> +    PrDoPreprocess ();
> +    UtEndEvent (Event);
> +
> +    if (Gbl_PreprocessOnly)
> +    {
> +        return AE_OK;
> +    }
> +
>     /*
>      * Scan the input file (file is already open) and
>      * build the parse tree
> @@ -382,6 +393,17 @@ DtCompileDataTable (
>         Status = DtCompileRsdp (FieldList);
>         return (Status);
>     }
> +    else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_S3PT))
> +    {
> +        Status = DtCompileS3pt (FieldList);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        DtSetTableLength ();
> +        return (Status);
> +    }
>
>     /*
>      * All other tables must use the common ACPI table header. Insert the
> @@ -401,7 +423,7 @@ DtCompileDataTable (
>     /* Validate the signature via the ACPI table list */
>
>     TableData = AcpiDmGetTableData (Signature);
> -    if (!TableData)
> +    if (!TableData || Gbl_CompileGeneric)
>     {
>         DtCompileGeneric ((void **) FieldList);
>         goto Out;
> @@ -483,6 +505,7 @@ DtCompileTable (
>     UINT8                   FieldType;
>     UINT8                   *Buffer;
>     UINT8                   *FlagBuffer = NULL;
> +    UINT32                  CurrentFlagByteOffset = 0;
>     ACPI_STATUS             Status;
>
>
> @@ -514,6 +537,11 @@ DtCompileTable (
>      */
>     for (; Info->Name; Info++)
>     {
> +        if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
> +        {
> +            continue;
> +        }
> +
>         if (!LocalField)
>         {
>             sprintf (MsgBuffer, "Found NULL field - Field name \"%s\" needed",
> @@ -544,6 +572,7 @@ DtCompileTable (
>             *Field = LocalField;
>
>             FlagBuffer = Buffer;
> +            CurrentFlagByteOffset = Info->Offset;
>             break;
>
>         case DT_FIELD_TYPE_FLAG:
> @@ -552,6 +581,14 @@ DtCompileTable (
>
>             if (FlagBuffer)
>             {
> +                /*
> +                 * We must increment the FlagBuffer when we have crossed
> +                 * into the next flags byte within the flags field
> +                 * of type DT_FIELD_TYPE_FLAGS_INTEGER.
> +                 */
> +                FlagBuffer += (Info->Offset - CurrentFlagByteOffset);
> +                CurrentFlagByteOffset = Info->Offset;
> +
>                 DtCompileFlag (FlagBuffer, LocalField, Info);
>             }
>             else
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index 1521297..42c3116 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -227,6 +227,10 @@ DtCompileTable (
>
>  /* dtio - binary and text input/output */
>
> +UINT32
> +DtGetNextLine (
> +    FILE                    *Handle);
> +
>  DT_FIELD *
>  DtScanFile (
>     FILE                    *Handle);
> @@ -471,6 +475,10 @@ DtCompileFadt (
>     void                    **PFieldList);
>
>  ACPI_STATUS
> +DtCompileFpdt (
> +    void                    **PFieldList);
> +
> +ACPI_STATUS
>  DtCompileHest (
>     void                    **PFieldList);
>
> @@ -487,14 +495,26 @@ DtCompileMcfg (
>     void                    **PFieldList);
>
>  ACPI_STATUS
> +DtCompileMpst (
> +    void                    **PFieldList);
> +
> +ACPI_STATUS
>  DtCompileMsct (
>     void                    **PFieldList);
>
>  ACPI_STATUS
> +DtCompilePmtt (
> +    void                    **PFieldList);
> +
> +ACPI_STATUS
>  DtCompileRsdt (
>     void                    **PFieldList);
>
>  ACPI_STATUS
> +DtCompileS3pt (
> +    DT_FIELD                **PFieldList);
> +
> +ACPI_STATUS
>  DtCompileSlic (
>     void                    **PFieldList);
>
> @@ -531,6 +551,7 @@ DtGetGenericTableInfo (
>  extern const unsigned char  TemplateAsf[];
>  extern const unsigned char  TemplateBoot[];
>  extern const unsigned char  TemplateBert[];
> +extern const unsigned char  TemplateBgrt[];
>  extern const unsigned char  TemplateCpep[];
>  extern const unsigned char  TemplateDbgp[];
>  extern const unsigned char  TemplateDmar[];
> @@ -538,14 +559,19 @@ extern const unsigned char  TemplateEcdt[];
>  extern const unsigned char  TemplateEinj[];
>  extern const unsigned char  TemplateErst[];
>  extern const unsigned char  TemplateFadt[];
> +extern const unsigned char  TemplateFpdt[];
> +extern const unsigned char  TemplateGtdt[];
>  extern const unsigned char  TemplateHest[];
>  extern const unsigned char  TemplateHpet[];
>  extern const unsigned char  TemplateIvrs[];
>  extern const unsigned char  TemplateMadt[];
>  extern const unsigned char  TemplateMcfg[];
>  extern const unsigned char  TemplateMchi[];
> +extern const unsigned char  TemplateMpst[];
>  extern const unsigned char  TemplateMsct[];
> +extern const unsigned char  TemplatePmtt[];
>  extern const unsigned char  TemplateRsdt[];
> +extern const unsigned char  TemplateS3pt[];
>  extern const unsigned char  TemplateSbst[];
>  extern const unsigned char  TemplateSlic[];
>  extern const unsigned char  TemplateSlit[];
> diff --git a/src/acpica/source/compiler/dtexpress.c b/src/acpica/source/compiler/dtexpress.c
> index 99de74f..2964902 100644
> --- a/src/acpica/source/compiler/dtexpress.c
> +++ b/src/acpica/source/compiler/dtexpress.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -214,7 +214,7 @@ DtDoOperator (
>         if (!RightValue)
>         {
>             DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
> -                Gbl_CurrentField, Gbl_CurrentField->Value);
> +                Gbl_CurrentField, NULL);
>             return (0);
>         }
>         Result = LeftValue / RightValue;
> @@ -224,7 +224,7 @@ DtDoOperator (
>         if (!RightValue)
>         {
>             DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
> -                Gbl_CurrentField, Gbl_CurrentField->Value);
> +                Gbl_CurrentField, NULL);
>             return (0);
>         }
>         Result = LeftValue % RightValue;
> @@ -263,7 +263,7 @@ DtDoOperator (
>         break;
>
>     case EXPOP_EQUAL:
> -        Result = LeftValue = RightValue;
> +        Result = LeftValue == RightValue;
>         break;
>
>     case EXPOP_NOT_EQUAL:
> @@ -295,13 +295,12 @@ DtDoOperator (
>         /* Unknown operator */
>
>         DtFatal (ASL_MSG_INVALID_EXPRESSION,
> -            Gbl_CurrentField, Gbl_CurrentField->Value);
> +            Gbl_CurrentField, NULL);
>         return (0);
>     }
>
>     DbgPrint (ASL_DEBUG_OUTPUT,
> -        "IntegerEval: %s (%8.8X%8.8X %s %8.8X%8.8X) = %8.8X%8.8X\n",
> -        Gbl_CurrentField->Value,
> +        "IntegerEval: (%8.8X%8.8X %s %8.8X%8.8X) = %8.8X%8.8X\n",
>         ACPI_FORMAT_UINT64 (LeftValue),
>         DtGetOpName (Operator),
>         ACPI_FORMAT_UINT64 (RightValue),
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index c3e0677..5ac6f6e 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -595,12 +595,25 @@ DtCompileFlag (
>         break;
>
>
> +    case ACPI_DMT_FLAGS1:
> +
> +        BitPosition = 1;
> +        BitLength = 2;
> +        break;
> +
> +
>     case ACPI_DMT_FLAGS2:
>
>         BitPosition = 2;
>         BitLength = 2;
>         break;
>
> +    case ACPI_DMT_FLAGS4:
> +
> +        BitPosition = 4;
> +        BitLength = 2;
> +        break;
> +
>     default:
>
>         DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid flag opcode");
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index 995df93..91d4aba 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -138,10 +138,6 @@ DtParseLine (
>     UINT32                  Line,
>     UINT32                  Offset);
>
> -UINT32
> -DtGetNextLine (
> -    FILE                    *Handle);
> -
>  static void
>  DtWriteBinary (
>     DT_SUBTABLE             *Subtable,
> @@ -488,6 +484,7 @@ DtGetNextLine (
>     BOOLEAN                 LineNotAllBlanks = FALSE;
>     UINT32                  State = DT_NORMAL_TEXT;
>     UINT32                  CurrentLineOffset;
> +    UINT32                  BeyondBufferCount;
>     UINT32                  i;
>     char                    c;
>
> @@ -705,7 +702,19 @@ DtGetNextLine (
>         }
>     }
>
> -    printf ("ERROR - Input line is too long (max %u)\n", ASL_LINE_BUFFER_SIZE);
> +    /* Line is too long for internal buffer. Determine actual length */
> +
> +    BeyondBufferCount = 1;
> +    c = (char) getc (Handle);
> +    while (c != '\n')
> +    {
> +        c = (char) getc (Handle);
> +        BeyondBufferCount++;
> +    }
> +
> +    printf ("ERROR - At %u: Input line (%u bytes) is too long (max %u)\n",
> +        Gbl_CurrentLineNumber++, ASL_LINE_BUFFER_SIZE + BeyondBufferCount,
> +        ASL_LINE_BUFFER_SIZE);
>     return (ASL_EOF);
>  }
>
> diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
> index c753771..0ffe6f4 100644
> --- a/src/acpica/source/compiler/dtparser.l
> +++ b/src/acpica/source/compiler/dtparser.l
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/dtparser.y b/src/acpica/source/compiler/dtparser.y
> index 5e22337..6377a0d 100644
> --- a/src/acpica/source/compiler/dtparser.y
> +++ b/src/acpica/source/compiler/dtparser.y
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -135,6 +135,10 @@ UINT64                      DtParserResult; /* Expression return value */
>  #define YYERROR_VERBOSE     1               /* Verbose error messages */
>  #define YYFLAG              -32768
>
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors  */
> +
> +#define YYMALLOC            malloc
> +#define YYFREE              free
>  %}
>
>  %union
> diff --git a/src/acpica/source/compiler/dtsubtable.c b/src/acpica/source/compiler/dtsubtable.c
> index dadb7bc..0921841 100644
> --- a/src/acpica/source/compiler/dtsubtable.c
> +++ b/src/acpica/source/compiler/dtsubtable.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -368,6 +368,11 @@ DtGetSubtableLength (
>
>     for (; Info->Name; Info++)
>     {
> +        if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
> +        {
> +            continue;
> +        }
> +
>         if (!Field)
>         {
>             goto Error;
> diff --git a/src/acpica/source/compiler/dttable.c b/src/acpica/source/compiler/dttable.c
> index 86b994b..e9668a2 100644
> --- a/src/acpica/source/compiler/dttable.c
> +++ b/src/acpica/source/compiler/dttable.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -732,6 +732,90 @@ DtCompileFadt (
>         }
>
>         DtInsertSubtable (ParentTable, Subtable);
> +
> +        if (Revision >= 5)
> +        {
> +            Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5,
> +                        &Subtable, TRUE);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return (Status);
> +            }
> +
> +            DtInsertSubtable (ParentTable, Subtable);
> +        }
> +    }
> +
> +    return (AE_OK);
> +}
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION:    DtCompileFpdt
> + *
> + * PARAMETERS:  List                - Current field list pointer
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Compile FPDT.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompileFpdt (
> +    void                    **List)
> +{
> +    ACPI_STATUS             Status;
> +    ACPI_FPDT_HEADER        *FpdtHeader;
> +    DT_SUBTABLE             *Subtable;
> +    DT_SUBTABLE             *ParentTable;
> +    ACPI_DMTABLE_INFO       *InfoTable;
> +    DT_FIELD                **PFieldList = (DT_FIELD **) List;
> +    DT_FIELD                *SubtableStart;
> +
> +
> +    while (*PFieldList)
> +    {
> +        SubtableStart = *PFieldList;
> +        Status = DtCompileTable (PFieldList, AcpiDmTableInfoFpdtHdr,
> +                    &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +        DtPushSubtable (Subtable);
> +
> +        FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
> +
> +        switch (FpdtHeader->Type)
> +        {
> +        case ACPI_FPDT_TYPE_BOOT:
> +            InfoTable = AcpiDmTableInfoFpdt0;
> +            break;
> +
> +        case ACPI_FPDT_TYPE_S3PERF:
> +            InfoTable = AcpiDmTableInfoFpdt1;
> +            break;
> +
> +        default:
> +            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "FPDT");
> +            return (AE_ERROR);
> +            break;
> +        }
> +
> +        Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +        DtPopSubtable ();
>     }
>
>     return (AE_OK);
> @@ -1097,6 +1181,12 @@ DtCompileMadt (
>         case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
>             InfoTable = AcpiDmTableInfoMadt10;
>             break;
> +        case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
> +            InfoTable = AcpiDmTableInfoMadt11;
> +            break;
> +        case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
> +            InfoTable = AcpiDmTableInfoMadt12;
> +            break;
>         default:
>             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
>             return (AE_ERROR);
> @@ -1144,6 +1234,143 @@ DtCompileMcfg (
>
>  /******************************************************************************
>  *
> + * FUNCTION:    DtCompileMpst
> + *
> + * PARAMETERS:  List                - Current field list pointer
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Compile MPST.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompileMpst (
> +    void                    **List)
> +{
> +    ACPI_STATUS             Status;
> +    DT_SUBTABLE             *Subtable;
> +    DT_SUBTABLE             *ParentTable;
> +    DT_FIELD                **PFieldList = (DT_FIELD **) List;
> +    ACPI_MPST_CHANNEL       *MpstChannelInfo;
> +    ACPI_MPST_POWER_NODE    *MpstPowerNode;
> +    ACPI_MPST_DATA_HDR      *MpstDataHeader;
> +    UINT16                  SubtableCount;
> +    UINT8                   PowerStateCount;
> +    UINT8                   ComponentCount;
> +
> +
> +    /* Main table */
> +
> +    Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst, &Subtable, TRUE);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return (Status);
> +    }
> +
> +    ParentTable = DtPeekSubtable ();
> +    DtInsertSubtable (ParentTable, Subtable);
> +    DtPushSubtable (Subtable);
> +
> +    MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer);
> +    SubtableCount = MpstChannelInfo->PowerNodeCount;
> +
> +    while (*PFieldList && SubtableCount)
> +    {
> +        /* Subtable: Memory Power Node(s) */
> +
> +        Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0,
> +                    &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +        DtPushSubtable (Subtable);
> +
> +        MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer);
> +        PowerStateCount = MpstPowerNode->NumPowerStates;
> +        ComponentCount = MpstPowerNode->NumPhysicalComponents;
> +
> +        ParentTable = DtPeekSubtable ();
> +
> +        /* Sub-subtables - Memory Power State Structure(s) */
> +
> +        while (*PFieldList && PowerStateCount)
> +        {
> +            Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0A,
> +                        &Subtable, TRUE);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return (Status);
> +            }
> +
> +            DtInsertSubtable (ParentTable, Subtable);
> +            PowerStateCount--;
> +        }
> +
> +        /* Sub-subtables - Physical Component ID Structure(s) */
> +
> +        while (*PFieldList && ComponentCount)
> +        {
> +            Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0B,
> +                        &Subtable, TRUE);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return (Status);
> +            }
> +
> +            DtInsertSubtable (ParentTable, Subtable);
> +            ComponentCount--;
> +        }
> +
> +        SubtableCount--;
> +        DtPopSubtable ();
> +    }
> +
> +    /* Subtable: Count of Memory Power State Characteristic structures */
> +
> +    DtPopSubtable ();
> +
> +    Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst1, &Subtable, TRUE);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return (Status);
> +    }
> +
> +    ParentTable = DtPeekSubtable ();
> +    DtInsertSubtable (ParentTable, Subtable);
> +    DtPushSubtable (Subtable);
> +
> +    MpstDataHeader = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable->Buffer);
> +    SubtableCount = MpstDataHeader->CharacteristicsCount;
> +
> +    ParentTable = DtPeekSubtable ();
> +
> +    /* Subtable: Memory Power State Characteristics structure(s) */
> +
> +    while (*PFieldList && SubtableCount)
> +    {
> +        Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst2,
> +                    &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        DtInsertSubtable (ParentTable, Subtable);
> +        SubtableCount--;
> +    }
> +
> +    DtPopSubtable ();
> +    return (AE_OK);
> +}
> +
> +
> +/******************************************************************************
> + *
>  * FUNCTION:    DtCompileMsct
>  *
>  * PARAMETERS:  List                - Current field list pointer
> @@ -1169,6 +1396,147 @@ DtCompileMsct (
>
>  /******************************************************************************
>  *
> + * FUNCTION:    DtCompilePmtt
> + *
> + * PARAMETERS:  List                - Current field list pointer
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Compile PMTT.
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompilePmtt (
> +    void                    **List)
> +{
> +    ACPI_STATUS             Status;
> +    DT_SUBTABLE             *Subtable;
> +    DT_SUBTABLE             *ParentTable;
> +    DT_FIELD                **PFieldList = (DT_FIELD **) List;
> +    DT_FIELD                *SubtableStart;
> +    ACPI_PMTT_HEADER        *PmttHeader;
> +    ACPI_PMTT_CONTROLLER    *PmttController;
> +    UINT16                  DomainCount;
> +    UINT8                   PrevType = ACPI_PMTT_TYPE_SOCKET;
> +
> +
> +    /* Main table */
> +
> +    Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt, &Subtable, TRUE);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return (Status);
> +    }
> +
> +    ParentTable = DtPeekSubtable ();
> +    DtInsertSubtable (ParentTable, Subtable);
> +    DtPushSubtable (Subtable);
> +
> +    while (*PFieldList)
> +    {
> +        SubtableStart = *PFieldList;
> +        Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttHdr,
> +                    &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        PmttHeader = ACPI_CAST_PTR (ACPI_PMTT_HEADER, Subtable->Buffer);
> +        while (PrevType >= PmttHeader->Type)
> +        {
> +            DtPopSubtable ();
> +
> +            if (PrevType == ACPI_PMTT_TYPE_SOCKET)
> +            {
> +                break;
> +            }
> +            PrevType--;
> +        }
> +        PrevType = PmttHeader->Type;
> +
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +        DtPushSubtable (Subtable);
> +
> +        switch (PmttHeader->Type)
> +        {
> +        case ACPI_PMTT_TYPE_SOCKET:
> +
> +            /* Subtable: Socket Structure */
> +
> +            Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt0,
> +                    &Subtable, TRUE);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return (Status);
> +            }
> +
> +            ParentTable = DtPeekSubtable ();
> +            DtInsertSubtable (ParentTable, Subtable);
> +            break;
> +
> +        case ACPI_PMTT_TYPE_CONTROLLER:
> +
> +            /* Subtable: Memory Controller Structure */
> +
> +            Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1,
> +                    &Subtable, TRUE);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return (Status);
> +            }
> +
> +            ParentTable = DtPeekSubtable ();
> +            DtInsertSubtable (ParentTable, Subtable);
> +
> +            PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER,
> +                (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER)));
> +            DomainCount = PmttController->DomainCount;
> +
> +            while (DomainCount)
> +            {
> +                Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1a,
> +                    &Subtable, TRUE);
> +                if (ACPI_FAILURE (Status))
> +                {
> +                    return (Status);
> +                }
> +
> +                DtInsertSubtable (ParentTable, Subtable);
> +                DomainCount--;
> +            }
> +            break;
> +
> +        case ACPI_PMTT_TYPE_DIMM:
> +
> +            /* Subtable: Physical Component Structure */
> +
> +            Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2,
> +                    &Subtable, TRUE);
> +            if (ACPI_FAILURE (Status))
> +            {
> +                return (Status);
> +            }
> +
> +            ParentTable = DtPeekSubtable ();
> +            DtInsertSubtable (ParentTable, Subtable);
> +            break;
> +
> +        default:
> +
> +            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PMTT");
> +            return (AE_ERROR);
> +        }
> +    }
> +
> +    return (Status);
> +}
> +
> +
> +/******************************************************************************
> + *
>  * FUNCTION:    DtCompileRsdt
>  *
>  * PARAMETERS:  List                - Current field list pointer
> @@ -1206,6 +1574,85 @@ DtCompileRsdt (
>
>  /******************************************************************************
>  *
> + * FUNCTION:    DtCompileS3pt
> + *
> + * PARAMETERS:  PFieldList          - Current field list pointer
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Compile S3PT (Pointed to by FPDT)
> + *
> + *****************************************************************************/
> +
> +ACPI_STATUS
> +DtCompileS3pt (
> +    DT_FIELD                **PFieldList)
> +{
> +    ACPI_STATUS             Status;
> +    ACPI_S3PT_HEADER        *S3ptHeader;
> +    DT_SUBTABLE             *Subtable;
> +    DT_SUBTABLE             *ParentTable;
> +    ACPI_DMTABLE_INFO       *InfoTable;
> +    DT_FIELD                *SubtableStart;
> +
> +
> +    Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt,
> +                &Gbl_RootTable, TRUE);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        return (Status);
> +    }
> +
> +    DtPushSubtable (Gbl_RootTable);
> +
> +    while (*PFieldList)
> +    {
> +        SubtableStart = *PFieldList;
> +        Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3ptHdr,
> +                    &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +        DtPushSubtable (Subtable);
> +
> +        S3ptHeader = ACPI_CAST_PTR (ACPI_S3PT_HEADER, Subtable->Buffer);
> +
> +        switch (S3ptHeader->Type)
> +        {
> +        case ACPI_S3PT_TYPE_RESUME:
> +            InfoTable = AcpiDmTableInfoS3pt0;
> +            break;
> +
> +        case ACPI_S3PT_TYPE_SUSPEND:
> +            InfoTable = AcpiDmTableInfoS3pt1;
> +            break;
> +
> +        default:
> +            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "S3PT");
> +            return (AE_ERROR);
> +        }
> +
> +        Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +        DtPopSubtable ();
> +    }
> +
> +    return (AE_OK);
> +}
> +
> +
> +/******************************************************************************
> + *
>  * FUNCTION:    DtCompileSlic
>  *
>  * PARAMETERS:  List                - Current field list pointer
> @@ -1447,7 +1894,9 @@ DtGetGenericTableInfo (
>             break;
>         }
>
> -        if (!ACPI_STRCMP (Name, Info->Name))
> +        /* Use caseless compare for generic keywords */
> +
> +        if (!AcpiUtStricmp (Name, Info->Name))
>         {
>             break;
>         }
> diff --git a/src/acpica/source/compiler/dttemplate.c b/src/acpica/source/compiler/dttemplate.c
> index 30d6b2d..ed5f79b 100644
> --- a/src/acpica/source/compiler/dttemplate.c
> +++ b/src/acpica/source/compiler/dttemplate.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index 7c2658f..8c3f2c1 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -159,6 +159,17 @@ const unsigned char TemplateAsf[] =
>     0x01,0x00                                 /* 00000070    ".."       */
>  };
>
> +const unsigned char TemplateBgrt[] =
> +{
> +    0x42,0x47,0x52,0x54,0x38,0x00,0x00,0x00,  /* 00000000    "BGRT8..." */
> +    0x01,0x0D,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
> +    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x23,0x06,0x11,0x20,0x01,0x00,0x00,0x00,  /* 00000020    "#.. ...." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000030    "........" */
> +};
> +
>  const unsigned char TemplateBert[] =
>  {
>     0x42,0x45,0x52,0x54,0x30,0x00,0x00,0x00,  /* 00000000    "BERT0..." */
> @@ -363,13 +374,15 @@ const unsigned char TemplateFacs[] =
>     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000038    "........" */
>  };
>
> +/* Version 5 FADT */
> +
>  const unsigned char TemplateFadt[] =
>  {
> -    0x46,0x41,0x43,0x50,0xF4,0x00,0x00,0x00,  /* 00000000    "FACP...." */
> -    0x04,0x4E,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".NINTEL " */
> +    0x46,0x41,0x43,0x50,0x0C,0x01,0x00,0x00,  /* 00000000    "FACP...." */
> +    0x05,0x18,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
>     0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
>     0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x28,0x05,0x10,0x20,0x01,0x00,0x00,0x00,  /* 00000020    "(.. ...." */
> +    0x23,0x11,0x11,0x20,0x01,0x00,0x00,0x00,  /* 00000020    "#.. ...." */
>     0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
>     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
>     0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -395,7 +408,41 @@ const unsigned char TemplateFadt[] =
>     0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x01,  /* 000000D8    "........" */
>     0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E0    "........" */
>     0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E8    "........" */
> -    0x00,0x00,0x00,0x00                       /* 000000F0    "...."     */
> +    0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x01,  /* 000000F0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000F8    "........" */
> +    0x01,0x08,0x00,0x01,0x00,0x00,0x00,0x00,  /* 00000100    "........" */
> +    0x00,0x00,0x00,0x00                       /* 00000108    "...."     */
> +};
> +
> +const unsigned char TemplateFpdt[] =
> +{
> +    0x46,0x50,0x44,0x54,0x64,0x00,0x00,0x00,  /* 00000000    "FPDTd..." */
> +    0x01,0xBD,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
> +    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x04,0x08,0x11,0x20,0x00,0x00,0x30,0x01,  /* 00000020    "... ..0." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x01,  /* 00000050    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000058    "........" */
> +    0x00,0x00,0x00,0x00                       /* 00000060    "...."     */
> +};
> +
> +const unsigned char TemplateGtdt[] =
> +{
> +    0x47,0x54,0x44,0x54,0x50,0x00,0x00,0x00,  /* 00000000    "GTDTP..." */
> +    0x01,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
> +    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x23,0x06,0x11,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "#.. ...." */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000028    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000048    "........" */
>  };
>
>  const unsigned char TemplateHest[] =
> @@ -500,13 +547,15 @@ const unsigned char TemplateIvrs[] =
>     0x00,0x00,0x00,0x00                       /* 000000B8    "...."     */
>  };
>
> +/* MADT with ACPI 5.0 subtables */
> +
>  const unsigned char TemplateMadt[] =
>  {
> -    0x41,0x50,0x49,0x43,0xB6,0x00,0x00,0x00,  /* 00000000    "APIC...." */
> -    0x01,0x45,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".EINTEL " */
> +    0x41,0x50,0x49,0x43,0xF6,0x00,0x00,0x00,  /* 00000000    "APIC...." */
> +    0x01,0xB0,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
>     0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
>     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "(.. ...." */
> +    0x23,0x06,0x11,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "#.. ...." */
>     0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00,  /* 00000028    "........" */
>     0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00,  /* 00000030    "........" */
>     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -524,7 +573,15 @@ const unsigned char TemplateMadt[] =
>     0x00,0x00,0x09,0x10,0x00,0x00,0x00,0x00,  /* 00000098    "........" */
>     0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
>     0x00,0x00,0x0A,0x0C,0x05,0x00,0x00,0x00,  /* 000000A8    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00             /* 000000B0    "......"   */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x28,  /* 000000B0    ".......(" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B8    "........" */
> +    0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,  /* 000000D8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00             /* 000000F0    "......"   */
>  };
>
>  const unsigned char TemplateMcfg[] =
> @@ -552,6 +609,24 @@ const unsigned char TemplateMchi[] =
>     0x00,0x00,0x00,0x00,0x00                  /* 00000040    "....."    */
>  };
>
> +const unsigned char TemplateMpst[] =
> +{
> +    0x4D,0x50,0x53,0x54,0x6E,0x00,0x00,0x00,  /* 00000000    "MPSTn..." */
> +    0x01,0x98,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
> +    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x04,0x08,0x11,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> +    0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
> +    0x01,0x00,0x41,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "..A....." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000058    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000060    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00             /* 00000068    "......"   */
> +};
> +
>  const unsigned char TemplateMsct[] =
>  {
>     0x4D,0x53,0x43,0x54,0x90,0x00,0x00,0x00,  /* 00000000    "MSCT...." */
> @@ -574,6 +649,33 @@ const unsigned char TemplateMsct[] =
>     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000088    "........" */
>  };
>
> +const unsigned char TemplatePmtt[] =
> +{
> +    0x50,0x4D,0x54,0x54,0xB4,0x00,0x00,0x00,  /* 00000000    "PMTT...." */
> +    0x01,0x3A,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".:INTEL " */
> +    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x26,0x08,0x11,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "&.. ...." */
> +    0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,  /* 00000028    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x54,0x00,  /* 00000030    "......T." */
> +    0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
> +    0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000058    "........" */
> +    0x02,0x00,0x14,0x00,0x02,0x00,0x00,0x00,  /* 00000060    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000068    "........" */
> +    0x00,0x00,0x00,0x00,0x02,0x00,0x14,0x00,  /* 00000070    "........" */
> +    0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
> +    0x01,0x00,0x20,0x00,0x01,0x00,0x00,0x00,  /* 00000088    ".. ....." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000090    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000098    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
> +    0x00,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,  /* 000000A8    "........" */
> +    0x00,0x00,0x00,0x00                       /* 000000B0    "...."     */
> +};
> +
>  const unsigned char TemplateRsdp[] =
>  {
>     0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20,  /* 00000000    "RSD PTR " */
> @@ -596,6 +698,17 @@ const unsigned char TemplateRsdt[] =
>     0x80,0x00,0x00,0x00                       /* 00000040    "...."     */
>  };
>
> +const unsigned char TemplateS3pt[] =
> +{
> +    0x53,0x33,0x50,0x54,0x34,0x00,0x00,0x00,  /* 00000000    "S3PT4..." */
> +    0x00,0x00,0x18,0x01,0x00,0x00,0x00,0x00,  /* 00000008    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000018    "........" */
> +    0x01,0x00,0x14,0x01,0x00,0x00,0x00,0x00,  /* 00000020    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
> +    0x00,0x00,0x00,0x00                       /* 00000030    "...."     */
> +};
> +
>  const unsigned char TemplateSbst[] =
>  {
>     0x53,0x42,0x53,0x54,0x30,0x00,0x00,0x00,  /* 00000000    "SBST0..." */
> diff --git a/src/acpica/source/compiler/dtutils.c b/src/acpica/source/compiler/dtutils.c
> index 65371cd..ece6424 100644
> --- a/src/acpica/source/compiler/dtutils.c
> +++ b/src/acpica/source/compiler/dtutils.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -456,7 +456,9 @@ DtGetFieldType (
>     case ACPI_DMT_FLAG6:
>     case ACPI_DMT_FLAG7:
>     case ACPI_DMT_FLAGS0:
> +    case ACPI_DMT_FLAGS1:
>     case ACPI_DMT_FLAGS2:
> +    case ACPI_DMT_FLAGS4:
>         Type = DT_FIELD_TYPE_FLAG;
>         break;
>
> @@ -582,8 +584,11 @@ DtGetFieldLength (
>     case ACPI_DMT_FLAG6:
>     case ACPI_DMT_FLAG7:
>     case ACPI_DMT_FLAGS0:
> +    case ACPI_DMT_FLAGS1:
>     case ACPI_DMT_FLAGS2:
> +    case ACPI_DMT_FLAGS4:
>     case ACPI_DMT_LABEL:
> +    case ACPI_DMT_EXTRA_TEXT:
>         ByteLength = 0;
>         break;
>
> @@ -593,6 +598,7 @@ DtGetFieldLength (
>     case ACPI_DMT_ACCWIDTH:
>     case ACPI_DMT_IVRS:
>     case ACPI_DMT_MADT:
> +    case ACPI_DMT_PMTT:
>     case ACPI_DMT_SRAT:
>     case ACPI_DMT_ASF:
>     case ACPI_DMT_HESTNTYP:
> @@ -622,6 +628,11 @@ DtGetFieldLength (
>         ByteLength = 4;
>         break;
>
> +    case ACPI_DMT_UINT40:
> +        ByteLength = 5;
> +        break;
> +
> +    case ACPI_DMT_UINT48:
>     case ACPI_DMT_NAME6:
>         ByteLength = 6;
>         break;
> diff --git a/src/acpica/source/components/debugger/dbcmds.c b/src/acpica/source/components/debugger/dbcmds.c
> index 21bccc1..4c34a79 100644
> --- a/src/acpica/source/components/debugger/dbcmds.c
> +++ b/src/acpica/source/components/debugger/dbcmds.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -118,6 +118,7 @@
>  #include "accommon.h"
>  #include "acevents.h"
>  #include "acdebug.h"
> +#include "acnamesp.h"
>  #include "acresrc.h"
>  #include "actables.h"
>
> @@ -141,6 +142,18 @@ AcpiDmTestResourceConversion (
>     ACPI_NAMESPACE_NODE     *Node,
>     char                    *Name);
>
> +static ACPI_STATUS
> +AcpiDbResourceCallback (
> +    ACPI_RESOURCE           *Resource,
> +    void                    *Context);
> +
> +static ACPI_STATUS
> +AcpiDbDeviceResources (
> +    ACPI_HANDLE             ObjHandle,
> +    UINT32                  NestingLevel,
> +    void                    *Context,
> +    void                    **ReturnValue);
> +
>
>  /*******************************************************************************
>  *
> @@ -220,28 +233,49 @@ AcpiDbSleep (
>     UINT8                   SleepState;
>
>
> +    ACPI_FUNCTION_TRACE (AcpiDbSleep);
> +
> +
>     SleepState = (UINT8) ACPI_STRTOUL (ObjectArg, NULL, 0);
>
>     AcpiOsPrintf ("**** Prepare to sleep ****\n");
>     Status = AcpiEnterSleepStatePrep (SleepState);
>     if (ACPI_FAILURE (Status))
>     {
> -        return (Status);
> +        goto ErrorExit;
>     }
>
>     AcpiOsPrintf ("**** Going to sleep ****\n");
> -    Status = AcpiEnterSleepState (SleepState);
> +    Status = AcpiEnterSleepState (SleepState, ACPI_NO_OPTIONAL_METHODS);
>     if (ACPI_FAILURE (Status))
>     {
> -        return (Status);
> +        goto ErrorExit;
>     }
>
> -    AcpiOsPrintf ("**** returning from sleep ****\n");
> +    AcpiOsPrintf ("**** Prepare to return from sleep ****\n");
> +    Status = AcpiLeaveSleepStatePrep (SleepState, ACPI_NO_OPTIONAL_METHODS);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        goto ErrorExit;
> +    }
> +
> +    AcpiOsPrintf ("**** Returning from sleep ****\n");
>     Status = AcpiLeaveSleepState (SleepState);
> +    if (ACPI_FAILURE (Status))
> +    {
> +        goto ErrorExit;
> +    }
>
>     return (Status);
> +
> +
> +ErrorExit:
> +
> +    ACPI_EXCEPTION ((AE_INFO, Status, "During sleep test"));
> +    return (Status);
>  }
>
> +
>  /*******************************************************************************
>  *
>  * FUNCTION:    AcpiDbDisplayLocks
> @@ -528,6 +562,78 @@ AcpiDbDisplayInterfaces (
>
>  /*******************************************************************************
>  *
> + * FUNCTION:    AcpiDbDisplayTemplate
> + *
> + * PARAMETERS:  BufferArg           - Buffer name or addrss
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Dump a buffer that contains a resource template
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDbDisplayTemplate (
> +    char                    *BufferArg)
> +{
> +    ACPI_NAMESPACE_NODE     *Node;
> +    ACPI_STATUS             Status;
> +    ACPI_BUFFER             ReturnObj;
> +
> +
> +    /* Translate BufferArg to an Named object */
> +
> +    Node = AcpiDbConvertToNode (BufferArg);
> +    if (!Node || (Node == AcpiGbl_RootNode))
> +    {
> +        AcpiOsPrintf ("Invalid argument: %s\n", BufferArg);
> +        return;
> +    }
> +
> +    /* We must have a buffer object */
> +
> +    if (Node->Type != ACPI_TYPE_BUFFER)
> +    {
> +        AcpiOsPrintf ("Not a Buffer object, cannot be a template: %s\n",
> +            BufferArg);
> +        return;
> +    }
> +
> +    ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE;
> +    ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +
> +    /* Attempt to convert the raw buffer to a resource list */
> +
> +    Status = AcpiRsCreateResourceList (Node->Object, &ReturnObj);
> +
> +    AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> +    AcpiDbgLevel |= ACPI_LV_RESOURCES;
> +
> +    if (ACPI_FAILURE (Status))
> +    {
> +        AcpiOsPrintf ("Could not convert Buffer to a resource list: %s, %s\n",
> +            BufferArg, AcpiFormatException (Status));
> +        goto DumpBuffer;
> +    }
> +
> +    /* Now we can dump the resource list */
> +
> +    AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE,
> +        ReturnObj.Pointer));
> +
> +DumpBuffer:
> +    AcpiOsPrintf ("\nRaw data buffer:\n");
> +    AcpiUtDumpBuffer ((UINT8 *) Node->Object->Buffer.Pointer,
> +        Node->Object->Buffer.Length,
> +        DB_BYTE_DISPLAY, ACPI_UINT32_MAX);
> +
> +    AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT);
> +    return;
> +}
> +
> +
> +/*******************************************************************************
> + *
>  * FUNCTION:    AcpiDmCompareAmlResources
>  *
>  * PARAMETERS:  Aml1Buffer          - Contains first resource list
> @@ -551,11 +657,14 @@ AcpiDmCompareAmlResources (
>  {
>     UINT8                   *Aml1;
>     UINT8                   *Aml2;
> +    UINT8                   *Aml1End;
> +    UINT8                   *Aml2End;
>     ACPI_RSDESC_SIZE        Aml1Length;
>     ACPI_RSDESC_SIZE        Aml2Length;
>     ACPI_RSDESC_SIZE        Offset = 0;
>     UINT8                   ResourceType;
>     UINT32                  Count = 0;
> +    UINT32                  i;
>
>
>     /* Compare overall buffer sizes (may be different due to size rounding) */
> @@ -563,16 +672,18 @@ AcpiDmCompareAmlResources (
>     if (Aml1BufferLength != Aml2BufferLength)
>     {
>         AcpiOsPrintf (
> -            "**** Buffer length mismatch in converted AML: original %X new %X ****\n",
> +            "**** Buffer length mismatch in converted AML: Original %X, New %X ****\n",
>             Aml1BufferLength, Aml2BufferLength);
>     }
>
>     Aml1 = Aml1Buffer;
>     Aml2 = Aml2Buffer;
> +    Aml1End = Aml1Buffer + Aml1BufferLength;
> +    Aml2End = Aml2Buffer + Aml2BufferLength;
>
>     /* Walk the descriptor lists, comparing each descriptor */
>
> -    while (Aml1 < (Aml1Buffer + Aml1BufferLength))
> +    while ((Aml1 < Aml1End) && (Aml2 < Aml2End))
>     {
>         /* Get the lengths of each descriptor */
>
> @@ -585,7 +696,7 @@ AcpiDmCompareAmlResources (
>         if (Aml1Length != Aml2Length)
>         {
>             AcpiOsPrintf (
> -                "**** Length mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X L1 %X L2 %X ****\n",
> +                "**** Length mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X Len1 %X, Len2 %X ****\n",
>                 Count, ResourceType, Offset, Aml1Length, Aml2Length);
>         }
>
> @@ -596,6 +707,15 @@ AcpiDmCompareAmlResources (
>             AcpiOsPrintf (
>                 "**** Data mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X ****\n",
>                 Count, ResourceType, Offset);
> +
> +            for (i = 0; i < Aml1Length; i++)
> +            {
> +                if (Aml1[i] != Aml2[i])
> +                {
> +                    AcpiOsPrintf ("Mismatch at byte offset %.2X: is %2.2X, should be %2.2X\n",
> +                        i, Aml2[i], Aml1[i]);
> +                }
> +            }
>         }
>
>         /* Exit on EndTag descriptor */
> @@ -698,160 +818,301 @@ Exit1:
>
>  /*******************************************************************************
>  *
> - * FUNCTION:    AcpiDbDisplayResources
> + * FUNCTION:    AcpiDbResourceCallback
>  *
> - * PARAMETERS:  ObjectArg       - String with hex value of the object
> + * PARAMETERS:  ACPI_WALK_RESOURCE_CALLBACK
>  *
> - * RETURN:      None
> + * RETURN:      Status
>  *
> - * DESCRIPTION: Display the resource objects associated with a device.
> + * DESCRIPTION: Simple callback to exercise AcpiWalkResources
>  *
>  ******************************************************************************/
>
> -void
> -AcpiDbDisplayResources (
> -    char                    *ObjectArg)
> +static ACPI_STATUS
> +AcpiDbResourceCallback (
> +    ACPI_RESOURCE           *Resource,
> +    void                    *Context)
> +{
> +
> +    return (AE_OK);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDbDeviceResources
> + *
> + * PARAMETERS:  ACPI_WALK_CALLBACK
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Display the _PRT/_CRS/_PRS resources for a device object.
> + *
> + ******************************************************************************/
> +
> +static ACPI_STATUS
> +AcpiDbDeviceResources (
> +    ACPI_HANDLE             ObjHandle,
> +    UINT32                  NestingLevel,
> +    void                    *Context,
> +    void                    **ReturnValue)
>  {
>     ACPI_NAMESPACE_NODE     *Node;
> -    ACPI_STATUS             Status;
> +    ACPI_NAMESPACE_NODE     *PrtNode = NULL;
> +    ACPI_NAMESPACE_NODE     *CrsNode = NULL;
> +    ACPI_NAMESPACE_NODE     *PrsNode = NULL;
> +    ACPI_NAMESPACE_NODE     *AeiNode = NULL;
> +    char                    *ParentPath;
>     ACPI_BUFFER             ReturnObj;
> +    ACPI_STATUS             Status;
>
>
> -    AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> -    AcpiDbgLevel |= ACPI_LV_RESOURCES;
> +    Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle);
> +    ParentPath = AcpiNsGetExternalPathname (Node);
> +    if (!ParentPath)
> +    {
> +        return (AE_NO_MEMORY);
> +    }
>
> -    /* Convert string to object pointer */
> +    /* Get handles to the resource methods for this device */
>
> -    Node = AcpiDbConvertToNode (ObjectArg);
> -    if (!Node)
> +    (void) AcpiGetHandle (Node, METHOD_NAME__PRT, ACPI_CAST_PTR (ACPI_HANDLE, &PrtNode));
> +    (void) AcpiGetHandle (Node, METHOD_NAME__CRS, ACPI_CAST_PTR (ACPI_HANDLE, &CrsNode));
> +    (void) AcpiGetHandle (Node, METHOD_NAME__PRS, ACPI_CAST_PTR (ACPI_HANDLE, &PrsNode));
> +    (void) AcpiGetHandle (Node, METHOD_NAME__AEI, ACPI_CAST_PTR (ACPI_HANDLE, &AeiNode));
> +    if (!PrtNode && !CrsNode && !PrsNode && !AeiNode)
>     {
> -        return;
> +        goto Cleanup;   /* Nothing to do */
>     }
>
> +    AcpiOsPrintf ("\nDevice: %s\n", ParentPath);
> +
>     /* Prepare for a return object of arbitrary size */
>
>     ReturnObj.Pointer = AcpiGbl_DbBuffer;
>     ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
>
> +
>     /* _PRT */
>
> -    AcpiOsPrintf ("Evaluating _PRT\n");
> +    if (PrtNode)
> +    {
> +        AcpiOsPrintf ("Evaluating _PRT\n");
>
> -    /* Check if _PRT exists */
> +        Status = AcpiEvaluateObject (PrtNode, NULL, NULL, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("Could not evaluate _PRT: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetCrs;
> +        }
>
> -    Status = AcpiEvaluateObject (Node, METHOD_NAME__PRT, NULL, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> -    {
> -        AcpiOsPrintf ("Could not obtain _PRT: %s\n",
> -            AcpiFormatException (Status));
> -        goto GetCrs;
> -    }
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
>
> -    ReturnObj.Pointer = AcpiGbl_DbBuffer;
> -    ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +        Status = AcpiGetIrqRoutingTable (Node, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetCrs;
> +        }
>
> -    Status = AcpiGetIrqRoutingTable (Node, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> -    {
> -        AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n",
> -            AcpiFormatException (Status));
> -        goto GetCrs;
> +        AcpiRsDumpIrqList (ACPI_CAST_PTR (UINT8, AcpiGbl_DbBuffer));
>     }
>
> -    AcpiRsDumpIrqList (ACPI_CAST_PTR (UINT8, AcpiGbl_DbBuffer));
> -
>
>     /* _CRS */
>
>  GetCrs:
> -    AcpiOsPrintf ("Evaluating _CRS\n");
> +    if (CrsNode)
> +    {
> +        AcpiOsPrintf ("Evaluating _CRS\n");
>
> -    ReturnObj.Pointer = AcpiGbl_DbBuffer;
> -    ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
>
> -    /* Check if _CRS exists */
> +        Status = AcpiEvaluateObject (CrsNode, NULL, NULL, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("Could not evaluate _CRS: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetPrs;
> +        }
>
> -    Status = AcpiEvaluateObject (Node, METHOD_NAME__CRS, NULL, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> -    {
> -        AcpiOsPrintf ("Could not obtain _CRS: %s\n",
> -            AcpiFormatException (Status));
> -        goto GetPrs;
> -    }
> +        /* This code is here to exercise the AcpiWalkResources interface */
>
> -    /* Get the _CRS resource list */
> +        Status = AcpiWalkResources (Node, METHOD_NAME__CRS,
> +            AcpiDbResourceCallback, NULL);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("AcpiWalkResources failed: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetPrs;
> +        }
>
> -    ReturnObj.Pointer = AcpiGbl_DbBuffer;
> -    ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +        /* Get the _CRS resource list */
>
> -    Status = AcpiGetCurrentResources (Node, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> -    {
> -        AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n",
> -            AcpiFormatException (Status));
> -        goto GetPrs;
> -    }
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
>
> -    /* Dump the _CRS resource list */
> +        Status = AcpiGetCurrentResources (Node, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetPrs;
> +        }
>
> -    AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE,
> -        ReturnObj.Pointer));
> +        /* Dump the _CRS resource list */
> +
> +        AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE,
> +            ReturnObj.Pointer));
>
> -    /*
> -     * Perform comparison of original AML to newly created AML. This tests both
> -     * the AML->Resource conversion and the Resource->Aml conversion.
> -     */
> -    Status = AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS);
> +        /*
> +         * Perform comparison of original AML to newly created AML. This tests both
> +         * the AML->Resource conversion and the Resource->Aml conversion.
> +         */
> +        Status = AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS);
>
> -    /* Execute _SRS with the resource list */
> +        /* Execute _SRS with the resource list */
>
> -    Status = AcpiSetCurrentResources (Node, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> -    {
> -        AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n",
> -            AcpiFormatException (Status));
> -        goto GetPrs;
> +        Status = AcpiSetCurrentResources (Node, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetPrs;
> +        }
>     }
>
>
>     /* _PRS */
>
>  GetPrs:
> -    AcpiOsPrintf ("Evaluating _PRS\n");
> +    if (PrsNode)
> +    {
> +        AcpiOsPrintf ("Evaluating _PRS\n");
>
> -    ReturnObj.Pointer = AcpiGbl_DbBuffer;
> -    ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
>
> -    /* Check if _PRS exists */
> +        Status = AcpiEvaluateObject (PrsNode, NULL, NULL, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("Could not evaluate _PRS: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetAei;
> +        }
>
> -    Status = AcpiEvaluateObject (Node, METHOD_NAME__PRS, NULL, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> -    {
> -        AcpiOsPrintf ("Could not obtain _PRS: %s\n",
> -            AcpiFormatException (Status));
> -        goto Cleanup;
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +
> +        Status = AcpiGetPossibleResources (Node, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n",
> +                AcpiFormatException (Status));
> +            goto GetAei;
> +        }
> +
> +        AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer));
>     }
>
> -    ReturnObj.Pointer = AcpiGbl_DbBuffer;
> -    ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
>
> -    Status = AcpiGetPossibleResources (Node, &ReturnObj);
> -    if (ACPI_FAILURE (Status))
> +    /* _AEI */
> +
> +GetAei:
> +    if (AeiNode)
>     {
> -        AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n",
> -            AcpiFormatException (Status));
> -        goto Cleanup;
> +        AcpiOsPrintf ("Evaluating _AEI\n");
> +
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +
> +        Status = AcpiEvaluateObject (AeiNode, NULL, NULL, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("Could not evaluate _AEI: %s\n",
> +                AcpiFormatException (Status));
> +            goto Cleanup;
> +        }
> +
> +        ReturnObj.Pointer = AcpiGbl_DbBuffer;
> +        ReturnObj.Length  = ACPI_DEBUG_BUFFER_SIZE;
> +
> +        Status = AcpiGetEventResources (Node, &ReturnObj);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            AcpiOsPrintf ("AcpiGetEventResources failed: %s\n",
> +                AcpiFormatException (Status));
> +            goto Cleanup;
> +        }
> +
> +        AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer));
>     }
>
> -    AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer));
>
>  Cleanup:
> +    ACPI_FREE (ParentPath);
> +    return (AE_OK);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDbDisplayResources
> + *
> + * PARAMETERS:  ObjectArg       - String object name or object pointer.
> + *                                "*" means "display resources for all devices"
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: Display the resource objects associated with a device.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDbDisplayResources (
> +    char                    *ObjectArg)
> +{
> +    ACPI_NAMESPACE_NODE     *Node;
> +
> +
> +    AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
> +    AcpiDbgLevel |= ACPI_LV_RESOURCES;
> +
> +    /* Asterisk means "display resources for all devices" */
> +
> +    if (!ACPI_STRCMP (ObjectArg, "*"))
> +    {
> +        (void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
> +                    ACPI_UINT32_MAX, AcpiDbDeviceResources, NULL, NULL, NULL);
> +    }
> +    else
> +    {
> +        /* Convert string to object pointer */
> +
> +        Node = AcpiDbConvertToNode (ObjectArg);
> +        if (Node)
> +        {
> +            if (Node->Type != ACPI_TYPE_DEVICE)
> +            {
> +                AcpiOsPrintf ("%4.4s: Name is not a device object (%s)\n",
> +                    Node->Name.Ascii, AcpiUtGetTypeName (Node->Type));
> +            }
> +            else
> +            {
> +                (void) AcpiDbDeviceResources (Node, 0, NULL, NULL);
> +            }
> +        }
> +    }
>
>     AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT);
> -    return;
>  }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
>  /*******************************************************************************
>  *
>  * FUNCTION:    AcpiDbGenerateGpe
> @@ -890,5 +1151,6 @@ AcpiDbGenerateGpe (
>
>     (void) AcpiEvGpeDispatch (NULL, GpeEventInfo, GpeNumber);
>  }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>  #endif /* ACPI_DEBUGGER */
> diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c
> index fb5fd19..d8b3aa9 100644
> --- a/src/acpica/source/components/debugger/dbdisply.c
> +++ b/src/acpica/source/components/debugger/dbdisply.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -162,6 +162,8 @@ static ACPI_ADR_SPACE_TYPE  AcpiGbl_SpaceIdList[] =
>     ACPI_ADR_SPACE_CMOS,
>     ACPI_ADR_SPACE_PCI_BAR_TARGET,
>     ACPI_ADR_SPACE_IPMI,
> +    ACPI_ADR_SPACE_GPIO,
> +    ACPI_ADR_SPACE_GSBUS,
>     ACPI_ADR_SPACE_DATA_TABLE,
>     ACPI_ADR_SPACE_FIXED_HARDWARE
>  };
> @@ -840,6 +842,7 @@ AcpiDbDisplayArgumentObject (
>  }
>
>
> +#if (!ACPI_REDUCED_HARDWARE)
>  /*******************************************************************************
>  *
>  * FUNCTION:    AcpiDbDisplayGpes
> @@ -1002,6 +1005,7 @@ AcpiDbDisplayGpes (
>         GpeXruptInfo = GpeXruptInfo->Next;
>     }
>  }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>
>
>  /*******************************************************************************
> @@ -1043,7 +1047,7 @@ AcpiDbDisplayHandlers (
>
>             while (HandlerObj)
>             {
> -                if (i == HandlerObj->AddressSpace.SpaceId)
> +                if (AcpiGbl_SpaceIdList[i] == HandlerObj->AddressSpace.SpaceId)
>                 {
>                     AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING,
>                         (HandlerObj->AddressSpace.HandlerFlags &
> @@ -1061,8 +1065,28 @@ AcpiDbDisplayHandlers (
>
>         FoundHandler:;
>         }
> +
> +        /* Find all handlers for user-defined SpaceIDs */
> +
> +        HandlerObj = ObjDesc->Device.Handler;
> +        while (HandlerObj)
> +        {
> +            if (HandlerObj->AddressSpace.SpaceId >= ACPI_USER_REGION_BEGIN)
> +            {
> +                AcpiOsPrintf (ACPI_PREDEFINED_PREFIX,
> +                    "User-defined ID", HandlerObj->AddressSpace.SpaceId);
> +                AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING,
> +                    (HandlerObj->AddressSpace.HandlerFlags &
> +                        ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) ? "Default" : "User",
> +                    HandlerObj->AddressSpace.Handler);
> +            }
> +
> +            HandlerObj = HandlerObj->AddressSpace.Next;
> +        }
>     }
>
> +#if (!ACPI_REDUCED_HARDWARE)
> +
>     /* Fixed event handlers */
>
>     AcpiOsPrintf ("\nFixed Event Handlers:\n");
> @@ -1081,6 +1105,8 @@ AcpiDbDisplayHandlers (
>         }
>     }
>
> +#endif /* !ACPI_REDUCED_HARDWARE */
> +
>     /* Miscellaneous global handlers */
>
>     AcpiOsPrintf ("\nMiscellaneous Global Handlers:\n");
> diff --git a/src/acpica/source/components/debugger/dbexec.c b/src/acpica/source/components/debugger/dbexec.c
> index 53539b9..eb85998 100644
> --- a/src/acpica/source/components/debugger/dbexec.c
> +++ b/src/acpica/source/components/debugger/dbexec.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/debugger/dbfileio.c b/src/acpica/source/components/debugger/dbfileio.c
> index 66ff961..495d609 100644
> --- a/src/acpica/source/components/debugger/dbfileio.c
> +++ b/src/acpica/source/components/debugger/dbfileio.c
> @@ -9,7 +9,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -343,10 +343,11 @@ AcpiDbReadTable (
>
>     fseek (fp, 0, SEEK_SET);
>
> -    /* The RSDT and FACS tables do not have standard ACPI headers */
> +    /* The RSDT, FACS and S3PT tables do not have standard ACPI headers */
>
>     if (ACPI_COMPARE_NAME (TableHeader.Signature, "RSD ") ||
> -        ACPI_COMPARE_NAME (TableHeader.Signature, "FACS"))
> +        ACPI_COMPARE_NAME (TableHeader.Signature, "FACS") ||
> +        ACPI_COMPARE_NAME (TableHeader.Signature, "S3PT"))
>     {
>         *TableLength = FileSize;
>         StandardHeader = FALSE;
> diff --git a/src/acpica/source/components/debugger/dbhistry.c b/src/acpica/source/components/debugger/dbhistry.c
> index 6b42b7b..a95f53b 100644
> --- a/src/acpica/source/components/debugger/dbhistry.c
> +++ b/src/acpica/source/components/debugger/dbhistry.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
> index 12f883d..3e61bdb 100644
> --- a/src/acpica/source/components/debugger/dbinput.c
> +++ b/src/acpica/source/components/debugger/dbinput.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -203,6 +203,7 @@ enum AcpiExDebuggerCommands
>     CMD_STATS,
>     CMD_STOP,
>     CMD_TABLES,
> +    CMD_TEMPLATE,
>     CMD_TERMINATE,
>     CMD_THREADS,
>     CMD_TRACE,
> @@ -271,6 +272,7 @@ static const COMMAND_INFO       AcpiGbl_DbCommands[] =
>     {"STATS",        0},
>     {"STOP",         0},
>     {"TABLES",       0},
> +    {"TEMPLATE",     1},
>     {"TERMINATE",    0},
>     {"THREADS",      3},
>     {"TRACE",        1},
> @@ -340,9 +342,10 @@ AcpiDbDisplayHelp (
>     AcpiOsPrintf ("  Predefined                          Check all predefined names\n");
>     AcpiOsPrintf ("  Prefix [<NamePath>]                 Set or Get current execution prefix\n");
>     AcpiOsPrintf ("  References <Addr>                   Find all references to object at addr\n");
> -    AcpiOsPrintf ("  Resources <Device>                  Get and display Device resources\n");
> +    AcpiOsPrintf ("  Resources <DeviceName | *>          Display Device resources (* = all devices)\n");
>     AcpiOsPrintf ("  Set N <NamedObject> <Value>         Set value for named integer\n");
>     AcpiOsPrintf ("  Sleep <SleepState>                  Simulate sleep/wake sequence\n");
> +    AcpiOsPrintf ("  Template <Object>                   Format/dump a Buffer/ResourceTemplate\n");
>     AcpiOsPrintf ("  Terminate                           Delete namespace and all internal objects\n");
>     AcpiOsPrintf ("  Type <Object>                       Display object type\n");
>
> @@ -731,12 +734,15 @@ AcpiDbCommandDispatch (
>         break;
>
>     case CMD_ENABLEACPI:
> +#if (!ACPI_REDUCED_HARDWARE)
> +
>         Status = AcpiEnable();
>         if (ACPI_FAILURE(Status))
>         {
>             AcpiOsPrintf("AcpiEnable failed (Status=%X)\n", Status);
>             return (Status);
>         }
> +#endif /* !ACPI_REDUCED_HARDWARE */
>         break;
>
>     case CMD_EVENT:
> @@ -926,6 +932,10 @@ AcpiDbCommandDispatch (
>         AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]);
>         break;
>
> +    case CMD_TEMPLATE:
> +        AcpiDbDisplayTemplate (AcpiGbl_DbArgs[1]);
> +        break;
> +
>     case CMD_TERMINATE:
>         AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
>         AcpiUtSubsystemShutdown ();
> diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
> index 110a7ba..47778cc 100644
> --- a/src/acpica/source/components/debugger/dbmethod.c
> +++ b/src/acpica/source/components/debugger/dbmethod.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/debugger/dbnames.c b/src/acpica/source/components/debugger/dbnames.c
> index b1d0712..d1faeef 100644
> --- a/src/acpica/source/components/debugger/dbnames.c
> +++ b/src/acpica/source/components/debugger/dbnames.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/debugger/dbstats.c b/src/acpica/source/components/debugger/dbstats.c
> index 5c1ce99..8a6e713 100644
> --- a/src/acpica/source/components/debugger/dbstats.c
> +++ b/src/acpica/source/components/debugger/dbstats.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/debugger/dbutils.c b/src/acpica/source/components/debugger/dbutils.c
> index 5e4f9eb..fd318d9 100644
> --- a/src/acpica/source/components/debugger/dbutils.c
> +++ b/src/acpica/source/components/debugger/dbutils.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -262,10 +262,7 @@ AcpiDbDumpExternalObject (
>     case ACPI_TYPE_STRING:
>
>         AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length);
> -        for (i = 0; i < ObjDesc->String.Length; i++)
> -        {
> -            AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]);
> -        }
> +        AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
>         AcpiOsPrintf ("\n");
>         break;
>
> @@ -280,7 +277,7 @@ AcpiDbDumpExternalObject (
>                 AcpiOsPrintf ("\n");
>             }
>             AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
> -                    ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
> +                    ObjDesc->Buffer.Length, DB_BYTE_DISPLAY, _COMPONENT);
>         }
>         else
>         {
> diff --git a/src/acpica/source/components/debugger/dbxface.c b/src/acpica/source/components/debugger/dbxface.c
> index 4ab4ac3..a53c26f 100644
> --- a/src/acpica/source/components/debugger/dbxface.c
> +++ b/src/acpica/source/components/debugger/dbxface.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/disassembler/dmbuffer.c b/src/acpica/source/components/disassembler/dmbuffer.c
> index 2399781..4f9dc15 100644
> --- a/src/acpica/source/components/disassembler/dmbuffer.c
> +++ b/src/acpica/source/components/disassembler/dmbuffer.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -180,19 +180,19 @@ AcpiDmDisasmByteList (
>             }
>
>             AcpiDmIndent (Level);
> -            if (ByteCount > 7)
> +            if (ByteCount > 8)
>             {
> -                AcpiOsPrintf ("/* %04X */    ", i);
> +                AcpiOsPrintf ("/* %04X */  ", i);
>             }
>         }
>
> -        AcpiOsPrintf ("0x%2.2X", (UINT32) ByteData[i]);
> +        AcpiOsPrintf (" 0x%2.2X", (UINT32) ByteData[i]);
>
>         /* Add comma if there are more bytes to display */
>
>         if (i < (ByteCount -1))
>         {
> -            AcpiOsPrintf (", ");
> +            AcpiOsPrintf (",");
>         }
>     }
>
> diff --git a/src/acpica/source/components/disassembler/dmnames.c b/src/acpica/source/components/disassembler/dmnames.c
> index a00aff1..02fc4e5 100644
> --- a/src/acpica/source/components/disassembler/dmnames.c
> +++ b/src/acpica/source/components/disassembler/dmnames.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/disassembler/dmobject.c b/src/acpica/source/components/disassembler/dmobject.c
> index 1aa7215..78d28d3 100644
> --- a/src/acpica/source/components/disassembler/dmobject.c
> +++ b/src/acpica/source/components/disassembler/dmobject.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> diff --git a/src/acpica/source/components/disassembler/dmopcode.c b/src/acpica/source/components/disassembler/dmopcode.c
> index 652c8a6..ed457ed 100644
> --- a/src/acpica/source/components/disassembler/dmopcode.c
> +++ b/src/acpica/source/components/disassembler/dmopcode.c
> @@ -8,7 +8,7 @@
>  *
>  * 1. Copyright Notice
>  *
> - * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
> + * Some or all of this work - Copyright (c) 1999 - 2012, Intel Corp.
>  * All rights reserved.
>  *
>  * 2. License
> @@ -375,6 +375,7 @@ AcpiDmDisassembleOneOp (