| 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
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 ( > UINT32 Length; > ACPI_PARSE_OBJECT *Child; > ACPI_STATUS Status; > + UINT8 *Aml; > > > if (!Op) > @@ -498,16 +499,19 @@ AcpiDmDisassembleOneOp ( > * types of buffers, we have to closely look at the data in the > * buffer to determine the type. > */ > - Status = AcpiDmIsResourceTemplate (Op); > - if (ACPI_SUCCESS (Status)) > + if (!AcpiGbl_NoResourceDisassembly) > { > - Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; > - AcpiOsPrintf ("ResourceTemplate"); > - break; > - } > - else if (Status == AE_AML_NO_RESOURCE_END_TAG) > - {