svn commit: r297044 - in vendor-sys/acpica/dist: . generate/unix generate/unix/acpidump generate/unix/acpiexamples generate/unix/acpiexec generate/unix/iasl source/common source/compiler source/com...
Jung-uk Kim
jkim at FreeBSD.org
Fri Mar 18 21:13:22 UTC 2016
Author: jkim
Date: Fri Mar 18 21:13:19 2016
New Revision: 297044
URL: https://svnweb.freebsd.org/changeset/base/297044
Log:
Import ACPICA 20160318.
Added:
vendor-sys/acpica/dist/source/compiler/aslpld.c (contents, props changed)
vendor-sys/acpica/dist/source/components/executer/exconcat.c (contents, props changed)
vendor-sys/acpica/dist/source/include/platform/acqnx.h (contents, props changed)
Modified:
vendor-sys/acpica/dist/changes.txt
vendor-sys/acpica/dist/generate/unix/Makefile.common
vendor-sys/acpica/dist/generate/unix/Makefile.config
vendor-sys/acpica/dist/generate/unix/acpidump/Makefile
vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile
vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile
vendor-sys/acpica/dist/generate/unix/iasl/Makefile
vendor-sys/acpica/dist/source/common/adwalk.c
vendor-sys/acpica/dist/source/common/dmextern.c
vendor-sys/acpica/dist/source/common/dmtable.c
vendor-sys/acpica/dist/source/common/dmtables.c
vendor-sys/acpica/dist/source/common/dmtbdump.c
vendor-sys/acpica/dist/source/common/dmtbinfo.c
vendor-sys/acpica/dist/source/compiler/aslcodegen.c
vendor-sys/acpica/dist/source/compiler/aslcompile.c
vendor-sys/acpica/dist/source/compiler/aslcompiler.h
vendor-sys/acpica/dist/source/compiler/aslexternal.c
vendor-sys/acpica/dist/source/compiler/aslglobal.h
vendor-sys/acpica/dist/source/compiler/asllength.c
vendor-sys/acpica/dist/source/compiler/aslload.c
vendor-sys/acpica/dist/source/compiler/aslmessages.c
vendor-sys/acpica/dist/source/compiler/aslopcodes.c
vendor-sys/acpica/dist/source/compiler/aslopt.c
vendor-sys/acpica/dist/source/compiler/asloptions.c
vendor-sys/acpica/dist/source/compiler/aslrestype2e.c
vendor-sys/acpica/dist/source/compiler/aslstubs.c
vendor-sys/acpica/dist/source/compiler/asltransform.c
vendor-sys/acpica/dist/source/compiler/aslutils.c
vendor-sys/acpica/dist/source/compiler/aslwalks.c
vendor-sys/acpica/dist/source/compiler/aslxrefout.c
vendor-sys/acpica/dist/source/compiler/dtparser.y
vendor-sys/acpica/dist/source/compiler/dttable1.c
vendor-sys/acpica/dist/source/compiler/dttable2.c
vendor-sys/acpica/dist/source/compiler/dttemplate.h
vendor-sys/acpica/dist/source/compiler/prparser.y
vendor-sys/acpica/dist/source/compiler/prscan.c
vendor-sys/acpica/dist/source/components/debugger/dbconvert.c
vendor-sys/acpica/dist/source/components/debugger/dbinput.c
vendor-sys/acpica/dist/source/components/debugger/dbutils.c
vendor-sys/acpica/dist/source/components/disassembler/dmbuffer.c
vendor-sys/acpica/dist/source/components/disassembler/dmopcode.c
vendor-sys/acpica/dist/source/components/disassembler/dmresrc.c
vendor-sys/acpica/dist/source/components/disassembler/dmresrcl.c
vendor-sys/acpica/dist/source/components/disassembler/dmutils.c
vendor-sys/acpica/dist/source/components/events/evregion.c
vendor-sys/acpica/dist/source/components/events/evrgnini.c
vendor-sys/acpica/dist/source/components/executer/exconfig.c
vendor-sys/acpica/dist/source/components/executer/exconvrt.c
vendor-sys/acpica/dist/source/components/executer/exdump.c
vendor-sys/acpica/dist/source/components/executer/exmisc.c
vendor-sys/acpica/dist/source/components/executer/exsystem.c
vendor-sys/acpica/dist/source/components/executer/exutils.c
vendor-sys/acpica/dist/source/components/hardware/hwregs.c
vendor-sys/acpica/dist/source/components/hardware/hwxface.c
vendor-sys/acpica/dist/source/components/namespace/nsaccess.c
vendor-sys/acpica/dist/source/components/namespace/nsconvert.c
vendor-sys/acpica/dist/source/components/namespace/nsdump.c
vendor-sys/acpica/dist/source/components/namespace/nsinit.c
vendor-sys/acpica/dist/source/components/namespace/nsload.c
vendor-sys/acpica/dist/source/components/namespace/nsprepkg.c
vendor-sys/acpica/dist/source/components/parser/psopinfo.c
vendor-sys/acpica/dist/source/components/resources/rsdump.c
vendor-sys/acpica/dist/source/components/resources/rsutils.c
vendor-sys/acpica/dist/source/components/tables/tbfadt.c
vendor-sys/acpica/dist/source/components/tables/tbxfload.c
vendor-sys/acpica/dist/source/components/utilities/utdebug.c
vendor-sys/acpica/dist/source/components/utilities/uteval.c
vendor-sys/acpica/dist/source/components/utilities/utglobal.c
vendor-sys/acpica/dist/source/components/utilities/utmisc.c
vendor-sys/acpica/dist/source/components/utilities/utnonansi.c
vendor-sys/acpica/dist/source/components/utilities/utprint.c
vendor-sys/acpica/dist/source/components/utilities/uttrack.c
vendor-sys/acpica/dist/source/components/utilities/utxfinit.c
vendor-sys/acpica/dist/source/include/acdebug.h
vendor-sys/acpica/dist/source/include/acdisasm.h
vendor-sys/acpica/dist/source/include/acevents.h
vendor-sys/acpica/dist/source/include/acglobal.h
vendor-sys/acpica/dist/source/include/acinterp.h
vendor-sys/acpica/dist/source/include/aclocal.h
vendor-sys/acpica/dist/source/include/acmacros.h
vendor-sys/acpica/dist/source/include/acnamesp.h
vendor-sys/acpica/dist/source/include/acparser.h
vendor-sys/acpica/dist/source/include/acpixf.h
vendor-sys/acpica/dist/source/include/acresrc.h
vendor-sys/acpica/dist/source/include/acstruct.h
vendor-sys/acpica/dist/source/include/actbl.h
vendor-sys/acpica/dist/source/include/actbl1.h
vendor-sys/acpica/dist/source/include/actbl2.h
vendor-sys/acpica/dist/source/include/actbl3.h
vendor-sys/acpica/dist/source/include/actypes.h
vendor-sys/acpica/dist/source/include/acutils.h
vendor-sys/acpica/dist/source/include/platform/acenv.h
vendor-sys/acpica/dist/source/os_specific/service_layers/osbsdtbl.c
vendor-sys/acpica/dist/source/os_specific/service_layers/osunixmap.c
vendor-sys/acpica/dist/source/tools/acpidump/apdump.c
vendor-sys/acpica/dist/source/tools/acpidump/apmain.c
vendor-sys/acpica/dist/source/tools/acpiexec/aeinitfile.c
vendor-sys/acpica/dist/source/tools/acpisrc/asfile.c
vendor-sys/acpica/dist/source/tools/acpisrc/astable.c
vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.c
vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.h
vendor-sys/acpica/dist/source/tools/acpixtract/axutils.c
Modified: vendor-sys/acpica/dist/changes.txt
==============================================================================
--- vendor-sys/acpica/dist/changes.txt Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/changes.txt Fri Mar 18 21:13:19 2016 (r297044)
@@ -1,7 +1,83 @@
----------------------------------------
-12 February 2016. Summary of changes for version 20160212:
+18 March 2016. Summary of changes for version 20160318:
-This release is available at https://acpica.org/downloads
+1) ACPICA kernel-resident subsystem:
+
+Added support for arbitrary bit lengths and bit offsets for registers
+defined by the Generic Address Structure. Previously, only aligned bit
+lengths of 8/16/32/64 were supported. This was sufficient for many years,
+but recently some machines have been seen that require arbitrary bit-
+level support. ACPICA BZ 1240. Lv Zheng.
+
+Fixed an issue where the \_SB._INI method sometimes must be evaluated
+before any _REG methods are evaluated. Lv Zheng.
+
+Implemented several changes related to ACPI table support
+(Headers/Disassembler/TableCompiler):
+NFIT: For ACPI 6.1, updated to add some additional new fields and
+constants.
+FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
+6).
+DMAR: Added new constants per the 10/2014 DMAR spec.
+IORT: Added new subtable per the 10/2015 IORT spec.
+HEST: For ACPI 6.1, added new constants and new subtable.
+DBG2: Added new constants per the 12/2015 DBG2 spec.
+FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
+ACPICA BZ 1249.
+ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
+
+Updated header support for the DMAR table to match the current version of
+the related spec.
+
+Added extensions to the ASL Concatenate operator to allow any ACPI object
+to be passed as an operand. Any object other than Integer/String/Buffer
+simply returns a string containing the object type. This extends the
+usefulness of the Printf macros. Previously, Concatenate would abort the
+control method if a non-data object was encountered.
+
+ACPICA source code: Deployed the C "const" keyword across the source code
+where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
+
+Example Code and Data Size: These are the sizes for the OS-independent
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
+debug version of the code includes the debug output trace mechanism and
+has a much larger code and data size.
+
+ Current Release:
+ Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
+ Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
+ Previous Release:
+ Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
+ Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/Disassembler: Improved the heuristic used to determine the number of
+arguments for an externally defined control method (a method in another
+table). Although this is an improvement, there is no deterministic way to
+"guess" the number of method arguments. Only the ACPI 6.0 External opcode
+will completely solve this problem as it is deployed (automatically) in
+newer BIOS code.
+
+iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
+statements that could cause errors when the disassembled file is
+compiled. ACPICA BZ 1243. David Box.
+
+iASL: Fixed a regression caused by the merger of the two versions of the
+local strtoul64. Because of a dependency on a global variable, strtoul64
+could return an error for integers greater than a 32-bit value. ACPICA BZ
+1260.
+
+iASL: Fixed a regression where a fault could occur for an ASL Return
+statement if it invokes a control method that is not resolved. ACPICA BZ
+1264.
+
+AcpiXtract: Improved input file validation: detection of binary files and
+non-acpidump text files.
+
+----------------------------------------
+12 February 2016. Summary of changes for version 20160212:
1) ACPICA kernel-resident subsystem:
Modified: vendor-sys/acpica/dist/generate/unix/Makefile.common
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/Makefile.common Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/generate/unix/Makefile.common Fri Mar 18 21:13:19 2016 (r297044)
@@ -9,8 +9,12 @@
ifeq ($(HOST), _FreeBSD)
HARDWARE_NAME := $(shell uname -p)
else
+ifeq ($(HOST), _QNX)
+HARDWARE_NAME := x86pc
+else
HARDWARE_NAME := $(shell uname -m)
endif
+endif
#
# Main rule will only generate versions that are appropriate for the running
Modified: vendor-sys/acpica/dist/generate/unix/Makefile.config
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/Makefile.config Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/generate/unix/Makefile.config Fri Mar 18 21:13:19 2016 (r297044)
@@ -67,6 +67,10 @@ ifeq ($(UNAME_S), NetBSD)
HOST = _NetBSD
endif
+ifeq ($(UNAME_S), QNX)
+HOST = _QNX
+endif
+
ifeq ($(HOST), _APPLE)
INSTALL = cp
INSTALLFLAGS ?= -f
@@ -163,6 +167,14 @@ CFLAGS += \
-D$(HOST)\
-D_GNU_SOURCE\
-I$(ACPICA_INCLUDE)
+
+#
+# QNX requires __EXT to enable most functions in its C library, analogous
+# to _GNU_SOURCE.
+#
+ifeq ($(HOST), _QNX)
+ CFLAGS+=-D__EXT
+endif
#
# Common compiler warning flags. The warning flags in addition
Modified: vendor-sys/acpica/dist/generate/unix/acpidump/Makefile
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/acpidump/Makefile Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/generate/unix/acpidump/Makefile Fri Mar 18 21:13:19 2016 (r297044)
@@ -64,6 +64,10 @@ ifeq ($(HOST), _NetBSD)
HOST_FAMILY = BSD
endif
+ifeq ($(HOST), _QNX)
+HOST_FAMILY = BSD
+endif
+
ifeq ($(HOST_FAMILY), BSD)
OBJECTS += \
$(OBJDIR)/osbsdtbl.o
Modified: vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Fri Mar 18 21:13:19 2016 (r297044)
@@ -59,6 +59,7 @@ OBJECTS = \
$(OBJDIR)/evrgnini.o\
$(OBJDIR)/evxface.o\
$(OBJDIR)/evxfregn.o\
+ $(OBJDIR)/exconcat.o\
$(OBJDIR)/exconfig.o\
$(OBJDIR)/exconvrt.o\
$(OBJDIR)/excreate.o\
Modified: vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Fri Mar 18 21:13:19 2016 (r297044)
@@ -106,6 +106,7 @@ OBJECTS = \
$(OBJDIR)/evxfgpe.o\
$(OBJDIR)/evxfregn.o\
$(OBJDIR)/exconfig.o\
+ $(OBJDIR)/exconcat.o\
$(OBJDIR)/exconvrt.o\
$(OBJDIR)/excreate.o\
$(OBJDIR)/exdebug.o\
@@ -245,11 +246,15 @@ CFLAGS += \
-DACPI_CHECKSUM_ABORT=TRUE
endif
+ifneq ($(HOST),_QNX)
LDFLAGS += -lpthread
+endif
ifneq ($(HOST),_APPLE)
+ifneq ($(HOST),_QNX)
LDFLAGS += -lrt
endif
+endif
#
# Common Rules
Modified: vendor-sys/acpica/dist/generate/unix/iasl/Makefile
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/iasl/Makefile Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/generate/unix/iasl/Makefile Fri Mar 18 21:13:19 2016 (r297044)
@@ -96,6 +96,7 @@ OBJECTS = \
$(OBJDIR)/aslrestype2w.o\
$(OBJDIR)/aslstartup.o\
$(OBJDIR)/aslstubs.o\
+ $(OBJDIR)/aslpld.o\
$(OBJDIR)/asltransform.o\
$(OBJDIR)/asltree.o\
$(OBJDIR)/aslutils.o\
@@ -143,6 +144,7 @@ OBJECTS = \
$(OBJDIR)/dttable2.o\
$(OBJDIR)/dttemplate.o\
$(OBJDIR)/dtutils.o\
+ $(OBJDIR)/exconcat.o\
$(OBJDIR)/exconvrt.o\
$(OBJDIR)/excreate.o\
$(OBJDIR)/exdump.o\
Modified: vendor-sys/acpica/dist/source/common/adwalk.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/adwalk.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/common/adwalk.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -327,6 +327,7 @@ AcpiDmConvertResourceIndexes (
WalkState);
if (ACPI_FAILURE (Status))
{
+ ACPI_FREE (WalkState);
return;
}
@@ -442,7 +443,7 @@ AcpiDmDumpDescending (
*
* DESCRIPTION: Check namepath Ops for orphaned method invocations
*
- * Note: Experimental.
+ * Note: Parts of this are experimental, under possible further development.
*
******************************************************************************/
@@ -508,6 +509,7 @@ AcpiDmFindOrphanDescending (
ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0);
}
break;
+
#endif
case AML_STORE_OP:
@@ -532,7 +534,7 @@ AcpiDmFindOrphanDescending (
/* One Arg means this is just a Store(Name,Target) */
AcpiDmAddOpToExternalList (ChildOp,
- ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0);
+ ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, ArgCount, 0);
return (AE_OK);
}
@@ -554,7 +556,7 @@ AcpiDmFindOrphanDescending (
(ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) &&
!Op->Common.Node)
{
- ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op->Common.Next);
+ ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op);
/*
* Check if namepath is a predicate for if/while or lone parameter to
@@ -788,6 +790,7 @@ AcpiDmXrefDescendingOp (
Op->Common.Next->Common.Next->Common.Value.Integer;
}
+ Flags |= ACPI_EXT_RESOLVED_REFERENCE | ACPI_EXT_ORIGIN_FROM_OPCODE;
AcpiDmAddOpToExternalList (Op, Path,
(UINT8) ObjectType, ParamCount, Flags);
@@ -855,12 +858,12 @@ AcpiDmXrefDescendingOp (
Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY,
ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE,
WalkState, &Node);
+
if (ACPI_SUCCESS (Status) && (Node->Flags & ANOBJ_IS_EXTERNAL))
{
/* Node was created by an External() statement */
Status = AE_NOT_FOUND;
- Flags = ACPI_EXT_RESOLVED_REFERENCE;
}
if (ACPI_FAILURE (Status))
@@ -880,12 +883,12 @@ AcpiDmXrefDescendingOp (
if (Node)
{
AcpiDmAddNodeToExternalList (Node,
- (UINT8) ObjectType, 0, Flags);
+ (UINT8) ObjectType, 7, Flags);
}
else
{
AcpiDmAddOpToExternalList (Op, Path,
- (UINT8) ObjectType, 0, Flags);
+ (UINT8) ObjectType, 7, Flags);
}
}
}
@@ -1067,40 +1070,69 @@ AcpiDmInspectPossibleArgs (
{
const ACPI_OPCODE_INFO *OpInfo;
UINT32 i;
- UINT32 Last = 0;
- UINT32 Lookahead;
+ UINT32 ArgumentCount = 0;
+ ACPI_PARSE_OBJECT *NextOp;
+ ACPI_PARSE_OBJECT *ExecuteOp;
- Lookahead = (ACPI_METHOD_NUM_ARGS + TargetCount) - CurrentOpArgCount;
+ if (!Op)
+ {
+ return (0);
+ }
/* Lookahead for the maximum number of possible arguments */
- for (i = 0; i < Lookahead; i++)
+ NextOp = Op->Common.Next;
+
+ for (i = 0; (i < ACPI_METHOD_NUM_ARGS) && NextOp; i++)
{
- if (!Op)
- {
- break;
- }
+ OpInfo = AcpiPsGetOpcodeInfo (NextOp->Common.AmlOpcode);
- OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
+ /* Any one of these operators is "very probably" not a method arg */
- /*
- * Any one of these operators is "very probably" not a method arg
- */
- if ((Op->Common.AmlOpcode == AML_STORE_OP) ||
- (Op->Common.AmlOpcode == AML_NOTIFY_OP))
+ if ((NextOp->Common.AmlOpcode == AML_STORE_OP) ||
+ (NextOp->Common.AmlOpcode == AML_NOTIFY_OP) ||
+ (OpInfo->Class == AML_CLASS_CONTROL) ||
+ (OpInfo->Class == AML_CLASS_CREATE) ||
+ (OpInfo->Class == AML_CLASS_NAMED_OBJECT))
{
break;
}
- if ((OpInfo->Class != AML_CLASS_EXECUTE) &&
- (OpInfo->Class != AML_CLASS_CONTROL))
+ if (OpInfo->Class == AML_CLASS_EXECUTE)
{
- Last = i+1;
+ /* Probable that this is method arg if there is no target */
+
+ ExecuteOp = NextOp->Common.Value.Arg;
+ while (ExecuteOp)
+ {
+ if ((ExecuteOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) &&
+ (ExecuteOp->Common.Value.Arg == NULL))
+ {
+ /* No target, could be a method arg */
+
+ break;
+ }
+
+ if (NextOp->Common.AmlOpcode == AML_REF_OF_OP)
+ {
+ break;
+ }
+
+ ExecuteOp = ExecuteOp->Common.Next;
+ }
+
+ if (!ExecuteOp)
+ {
+ /* Has a target, not method arg */
+
+ return (ArgumentCount);
+ }
}
- Op = Op->Common.Next;
+ ArgumentCount++;
+ NextOp = NextOp->Common.Next;
}
- return (Last);
+ return (ArgumentCount);
}
Modified: vendor-sys/acpica/dist/source/common/dmextern.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/dmextern.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/common/dmextern.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -754,46 +754,6 @@ AcpiDmAddPathToExternalList (
/*******************************************************************************
*
- * FUNCTION: AcpiDmEternalIsMatch
- *
- * PARAMETERS: NamePath - Path to match to External Name
- * ExternalPath - External NamePath to be matched
- *
- * RETURN: BOOLEAN
- *
- * DESCRIPTION: Returns TRUE if NamePath matches the last NamePath-length
- * characters of ExternalPath.
- *
- * External (_SB_.DEV0.ABCD) will match:
- * _SB_.DEV0.ABCD
- * DEV0.ABCD
- * ABCD
- *
- ******************************************************************************/
-
-static BOOLEAN
-AcpiDmExternalIsMatch (
- const char * NamePath,
- const char * ListNamePath)
-{
- BOOLEAN Match = FALSE;
-
-
- if (strlen (ListNamePath) >= strlen (NamePath))
- {
- if (!strcmp (ListNamePath +
- (strlen (ListNamePath) - strlen (NamePath)), NamePath))
- {
- return (TRUE);
- }
- }
-
- return (Match);
-}
-
-
-/*******************************************************************************
- *
* FUNCTION: AcpiDmCreateNewExternal
*
* PARAMETERS: ExternalPath - External path to the object
@@ -850,26 +810,29 @@ AcpiDmCreateNewExternal (
{
/* Check for duplicates */
- if (AcpiDmExternalIsMatch (ExternalPath, NextExternal->Path))
+ if (!strcmp (ExternalPath, NextExternal->Path))
{
- /* Duplicate method, check that the Value (ArgCount) is the same */
-
- if ((NextExternal->Type == ACPI_TYPE_METHOD) &&
- (NextExternal->Flags & ANOBJ_IS_EXTERNAL) &&
- (NextExternal->Value != Value) &&
- (Value > 0))
+ /*
+ * If this external came from an External() opcode, we are
+ * finished with this one. (No need to check any further).
+ */
+ if (NextExternal->Flags & ACPI_EXT_ORIGIN_FROM_OPCODE)
{
- ACPI_ERROR ((AE_INFO,
- "External method arg count mismatch %s: "
- "Current %u, attempted %u",
- NextExternal->Path, NextExternal->Value, Value));
+ return_ACPI_STATUS (AE_ALREADY_EXISTS);
}
/* Allow upgrade of type from ANY */
- else if (NextExternal->Type == ACPI_TYPE_ANY)
+ else if ((NextExternal->Type == ACPI_TYPE_ANY) &&
+ (Type != ACPI_TYPE_ANY))
{
NextExternal->Type = Type;
+ }
+
+ /* Update the argument count as necessary */
+
+ if (Value < NextExternal->Value)
+ {
NextExternal->Value = Value;
}
@@ -1125,90 +1088,63 @@ AcpiDmEmitExternals (
AcpiDmUnresolvedWarning (1);
- /* Emit any unresolved method externals in a single text block */
-
- NextExternal = AcpiGbl_ExternalList;
- while (NextExternal)
- {
- if ((NextExternal->Type == ACPI_TYPE_METHOD) &&
- (!(NextExternal->Flags & ACPI_EXT_RESOLVED_REFERENCE)))
- {
- AcpiOsPrintf (" External (%s%s",
- NextExternal->Path,
- AcpiDmGetObjectTypeName (NextExternal->Type));
-
- AcpiOsPrintf (") // Warning: Unresolved method, "
- "guessing %u arguments\n",
- NextExternal->Value);
-
- NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED;
- }
-
- NextExternal = NextExternal->Next;
- }
-
- AcpiOsPrintf ("\n");
-
-
- /* Emit externals that were imported from a file */
-
if (Gbl_ExternalRefFilename)
{
AcpiOsPrintf (
- " /*\n * External declarations that were imported from\n"
- " * the reference file [%s]\n */\n",
+ " /*\n * External declarations were imported from\n"
+ " * a reference file -- %s\n */\n\n",
Gbl_ExternalRefFilename);
-
- NextExternal = AcpiGbl_ExternalList;
- while (NextExternal)
- {
- if (!(NextExternal->Flags & ACPI_EXT_EXTERNAL_EMITTED) &&
- (NextExternal->Flags & ACPI_EXT_ORIGIN_FROM_FILE))
- {
- AcpiOsPrintf (" External (%s%s",
- NextExternal->Path,
- AcpiDmGetObjectTypeName (NextExternal->Type));
-
- if (NextExternal->Type == ACPI_TYPE_METHOD)
- {
- AcpiOsPrintf (") // %u Arguments\n",
- NextExternal->Value);
- }
- else
- {
- AcpiOsPrintf (")\n");
- }
- NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED;
- }
-
- NextExternal = NextExternal->Next;
- }
-
- AcpiOsPrintf ("\n");
}
/*
- * Walk the list of externals found during the AML parsing
+ * Walk and emit the list of externals found during the AML parsing
*/
while (AcpiGbl_ExternalList)
{
+ AcpiGbl_ExternalList = AcpiGbl_ExternalList;
if (!(AcpiGbl_ExternalList->Flags & ACPI_EXT_EXTERNAL_EMITTED))
{
- AcpiOsPrintf (" External (%s%s",
+ AcpiOsPrintf (" External (%s%s)",
AcpiGbl_ExternalList->Path,
AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type));
- /* For methods, add a comment with the number of arguments */
+ /* Check for "unresolved" method reference */
- if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
+ if ((AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) &&
+ (!(AcpiGbl_ExternalList->Flags & ACPI_EXT_RESOLVED_REFERENCE)))
{
- AcpiOsPrintf (") // %u Arguments\n",
+ AcpiOsPrintf (" // Warning: Unknown method, "
+ "guessing %u arguments",
AcpiGbl_ExternalList->Value);
}
+
+ /* Check for external from a external references file */
+
+ else if (AcpiGbl_ExternalList->Flags & ACPI_EXT_ORIGIN_FROM_FILE)
+ {
+ if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
+ {
+ AcpiOsPrintf (" // %u Arguments",
+ AcpiGbl_ExternalList->Value);
+ }
+
+ AcpiOsPrintf (" // From external reference file");
+ }
+
+ /* This is the normal external case */
+
else
{
- AcpiOsPrintf (")\n");
+ /* For methods, add a comment with the number of arguments */
+
+ if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
+ {
+ AcpiOsPrintf (" // %u Arguments",
+ AcpiGbl_ExternalList->Value);
+ }
}
+
+ AcpiOsPrintf ("\n");
}
/* Free this external info block and move on to next external */
@@ -1341,15 +1277,17 @@ AcpiDmUnresolvedWarning (
Format = Type ? Pad : NoPad;
sprintf (ExternalWarningPart1,
- "%s iASL Warning: There were %u external control methods found during\n"
+ "%s iASL Warning: There %s %u external control method%s found during\n"
"%s disassembly, but only %u %s resolved (%u unresolved). Additional\n"
"%s ACPI tables may be required to properly disassemble the code. This\n"
"%s resulting disassembler output file may not compile because the\n"
"%s disassembler did not know how many arguments to assign to the\n"
"%s unresolved methods. Note: SSDTs can be dynamically loaded at\n"
"%s runtime and may or may not be available via the host OS.\n",
- Format, AcpiGbl_NumExternalMethods, Format, AcpiGbl_ResolvedExternalMethods,
- (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"),
+ Format, (AcpiGbl_NumExternalMethods != 1 ? "were" : "was"),
+ AcpiGbl_NumExternalMethods, (AcpiGbl_NumExternalMethods != 1 ? "s" : ""),
+ Format, AcpiGbl_ResolvedExternalMethods,
+ (AcpiGbl_ResolvedExternalMethods != 1 ? "were" : "was"),
(AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods),
Format, Format, Format, Format, Format);
@@ -1391,7 +1329,7 @@ AcpiDmUnresolvedWarning (
{
/* The -e option was specified, but there are still some unresolved externals */
- AcpiOsPrintf (" /*\n%s *\n *\n */\n",
+ AcpiOsPrintf (" /*\n%s *\n%s *\n%s */\n",
ExternalWarningPart1, ExternalWarningPart3, ExternalWarningPart4);
}
}
Modified: vendor-sys/acpica/dist/source/common/dmtable.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/dmtable.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/common/dmtable.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -118,6 +118,7 @@ static const char *AcpiDmEinjA
"Check Busy Status",
"Get Command Status",
"Set Error Type With Address",
+ "Get Execute Timings",
"Unknown Action"
};
@@ -150,6 +151,7 @@ static const char *AcpiDmErstA
"Get Error Address Range",
"Get Error Address Length",
"Get Error Attributes",
+ "Execute Timings",
"Unknown Action"
};
@@ -209,6 +211,10 @@ static const char *AcpiDmHestN
"NMI",
"CMCI", /* ACPI 5.0 */
"MCE", /* ACPI 5.0 */
+ "GPIO", /* ACPI 6.0 */
+ "SEA", /* ACPI 6.1 */
+ "SEI", /* ACPI 6.1 */
+ "GSIV", /* ACPI 6.1 */
"Unknown Notify Type" /* Reserved */
};
Modified: vendor-sys/acpica/dist/source/common/dmtables.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/dmtables.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/common/dmtables.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -141,7 +141,6 @@ AdCreateTableHeader (
char *Filename,
ACPI_TABLE_HEADER *Table)
{
- char *NewFilename;
UINT8 Checksum;
@@ -184,11 +183,10 @@ AdCreateTableHeader (
break;
}
- AcpiOsPrintf ("\n");
/* Print and validate the table checksum */
- AcpiOsPrintf (" * Checksum 0x%2.2X", Table->Checksum);
+ AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum);
Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);
if (Checksum)
@@ -205,33 +203,16 @@ AdCreateTableHeader (
AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision);
AcpiOsPrintf (" */\n");
- /* Create AML output filename based on input filename */
-
- if (Filename)
- {
- NewFilename = FlGenerateFilename (Filename, "aml");
- }
- else
- {
- NewFilename = UtStringCacheCalloc (9);
- if (NewFilename)
- {
- strncat (NewFilename, Table->Signature, 4);
- strcat (NewFilename, ".aml");
- }
- }
-
- if (!NewFilename)
- {
- AcpiOsPrintf (" **** Could not generate AML output filename\n");
- return;
- }
-
- /* Open the ASL definition block */
-
+ /*
+ * Open the ASL definition block.
+ *
+ * Note: the AMLFilename string is left zero-length in order to just let
+ * the compiler create it when the disassembled file is compiled. This
+ * makes it easier to rename the disassembled ASL file if needed.
+ */
AcpiOsPrintf (
- "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
- NewFilename, Table->Signature, Table->Revision,
+ "DefinitionBlock (\"\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
+ Table->Signature, Table->Revision,
Table->OemId, Table->OemTableId, Table->OemRevision);
}
Modified: vendor-sys/acpica/dist/source/common/dmtbdump.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/dmtbdump.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/common/dmtbdump.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -1773,6 +1773,12 @@ AcpiDmDumpIort (
IortSmmu = ACPI_ADD_PTR (ACPI_IORT_SMMU, IortNode, NodeOffset);
break;
+ case ACPI_IORT_NODE_SMMU_V3:
+
+ InfoTable = AcpiDmTableInfoIort4;
+ Length = IortNode->Length - NodeOffset;
+ break;
+
default:
AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n",
@@ -3139,7 +3145,7 @@ AcpiDmDumpS3pt (
{
ACPI_STATUS Status;
UINT32 Offset = sizeof (ACPI_TABLE_S3PT);
- ACPI_S3PT_HEADER *SubTable;
+ ACPI_FPDT_HEADER *SubTable;
ACPI_DMTABLE_INFO *InfoTable;
ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
@@ -3152,7 +3158,7 @@ AcpiDmDumpS3pt (
return 0;
}
- SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset);
+ SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
while (Offset < S3ptTable->Length)
{
/* Common subtable header */
@@ -3204,7 +3210,7 @@ NextSubTable:
/* Point to next subtable */
Offset += SubTable->Length;
- SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length);
+ SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length);
}
return (S3ptTable->Length);
Modified: vendor-sys/acpica/dist/source/common/dmtbinfo.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/dmtbinfo.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/common/dmtbinfo.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -150,8 +150,8 @@
#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_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT_POINTER,f)
+#define ACPI_FPDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_POINTER,f)
#define ACPI_GTDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_BLOCK,f)
#define ACPI_GTDT0a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_ENTRY,f)
#define ACPI_GTDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_WATCHDOG,f)
@@ -170,6 +170,7 @@
#define ACPI_IORT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT,f)
#define ACPI_IORT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ROOT_COMPLEX,f)
#define ACPI_IORT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU,f)
+#define ACPI_IORT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU_V3,f)
#define ACPI_IORTA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_MEMORY_ACCESS,f)
#define ACPI_IORTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NODE,f)
#define ACPI_IORTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ID_MAPPING,f)
@@ -222,7 +223,7 @@
#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_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_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_SLIC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIC,f)
@@ -256,6 +257,7 @@
#define ACPI_GTDT0a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o)
#define ACPI_GTDT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o)
#define ACPI_IORT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o)
+#define ACPI_IORT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU_V3,f,o)
#define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o)
#define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o)
#define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o)
@@ -1095,11 +1097,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI
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_UINT64, ACPI_FPDT1_OFFSET (Address), "FPDT Boot Record Address", 0},
ACPI_DMT_TERMINATOR
};
@@ -1108,10 +1106,18 @@ ACPI_DMTABLE_INFO AcpiDmTableI
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_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Record Address", 0},
ACPI_DMT_TERMINATOR
};
+#if 0
+ /* Boot Performance Record, not supported at this time. */
+ {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},
+#endif
/*******************************************************************************
*
@@ -1557,6 +1563,23 @@ ACPI_DMTABLE_INFO AcpiDmTableI
ACPI_DMT_TERMINATOR
};
+/* 0x04: SMMUv3 */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[] =
+{
+ {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (BaseAddress), "Base Address", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Flags), "Flags (decoded below)", 0},
+ {ACPI_DMT_FLAG0, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "COHACC Override", 0},
+ {ACPI_DMT_FLAG1, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "HTTU Override", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (VatosAddress), "VATOS Address", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Model), "Model", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (EventGsiv), "Event GSIV", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (PriGsiv), "PRI GSIV", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (GerrGsiv), "GERR GSIV", 0},
+ {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (SyncGsiv), "Sync GSIV", 0},
+ ACPI_DMT_TERMINATOR
+};
/*******************************************************************************
*
@@ -2209,7 +2232,10 @@ ACPI_DMTABLE_INFO AcpiDmTableI
{ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemVendorId), "Subsystem Vendor Id", 0},
{ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemDeviceId), "Subsystem Device Id", 0},
{ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemRevisionId), "Subsystem Revision Id", 0},
- {ACPI_DMT_UINT48, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0},
+ {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ValidFields), "Valid Fields", 0},
+ {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ManufacturingLocation), "Manufacturing Location", 0},
+ {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (ManufacturingDate), "Manufacturing Date", 0},
+ {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0},
{ACPI_DMT_UINT32, ACPI_NFIT4_OFFSET (SerialNumber), "Serial Number", 0},
{ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Code), "Code", 0},
{ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Windows), "Window Count", 0},
Modified: vendor-sys/acpica/dist/source/compiler/aslcodegen.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslcodegen.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/compiler/aslcodegen.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -590,6 +590,12 @@ CgWriteNode (
return;
}
+ if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
+ Gbl_DoExternals == FALSE)
+ {
+ return;
+ }
+
Op->Asl.FinalAmlLength = 0;
switch (Op->Asl.AmlOpcode)
Modified: vendor-sys/acpica/dist/source/compiler/aslcompile.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslcompile.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/compiler/aslcompile.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -281,11 +281,14 @@ CmDoCompile (
/* Resolve External Declarations */
- Event = UtBeginEvent ("Resolve all Externals");
- DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n");
- TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
- ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL);
- UtEndEvent (Event);
+ if (Gbl_DoExternals)
+ {
+ Event = UtBeginEvent ("Resolve all Externals");
+ DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n");
+ TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
+ ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL);
+ UtEndEvent (Event);
+ }
/*
* Semantic analysis. This can happen only after the
Modified: vendor-sys/acpica/dist/source/compiler/aslcompiler.h
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslcompiler.h Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/compiler/aslcompiler.h Fri Mar 18 21:13:19 2016 (r297044)
@@ -538,6 +538,14 @@ OptOptimizeNamePath (
/*
+ * aslpld - ToPLD macro support
+ */
+void
+OpcDoPld (
+ ACPI_PARSE_OBJECT *Op);
+
+
+/*
* aslprintf - Printf/Fprintf macros
*/
void
Modified: vendor-sys/acpica/dist/source/compiler/aslexternal.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslexternal.c Fri Mar 18 20:24:31 2016 (r297043)
+++ vendor-sys/acpica/dist/source/compiler/aslexternal.c Fri Mar 18 21:13:19 2016 (r297044)
@@ -146,6 +146,7 @@ ExInsertArgCount (
char * ExternalName;
char * CallName;
UINT16 ArgCount = 0;
+ ACPI_STATUS Status;
CallName = AcpiNsGetNormalizedPathname (Op->Asl.Node, TRUE);
@@ -166,43 +167,49 @@ ExInsertArgCount (
NameOp = Next->Asl.Child->Asl.Child;
ExternalName = AcpiNsGetNormalizedPathname (NameOp->Asl.Node, TRUE);
- if (!strcmp (CallName, ExternalName))
+ if (strcmp (CallName, ExternalName))
{
- Next->Asl.Child->Asl.CompileFlags |= NODE_VISITED;
+ ACPI_FREE (ExternalName);
+ Next = Next->Asl.Next;
+ continue;
+ }
- /*
- * Since we will reposition Externals to the Root, set Namepath
- * to the fully qualified name and recalculate the aml length
- */
- if (ACPI_FAILURE (UtInternalizeName (
- ExternalName, &NameOp->Asl.Value.String)))
- {
- AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL,
- NULL, "- Could not Internalize External");
+ Next->Asl.Child->Asl.CompileFlags |= NODE_VISITED;
- break;
- }
-
- NameOp->Asl.AmlLength = strlen (NameOp->Asl.Value.String);
+ /*
+ * Since we will reposition Externals to the Root, set Namepath
+ * to the fully qualified name and recalculate the aml length
+ */
+ Status = UtInternalizeName (ExternalName,
+ &NameOp->Asl.Value.String);
- /* Get argument count */
+ ACPI_FREE (ExternalName);
+ if (ACPI_FAILURE (Status))
+ {
+ AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL,
+ NULL, "- Could not Internalize External");
+ break;
+ }
- Child = Op->Asl.Child;
- while (Child)
- {
- ArgCount++;
- Child = Child->Asl.Next;
- }
+ NameOp->Asl.AmlLength = strlen (NameOp->Asl.Value.String);
- /* Setup ArgCount operand */
+ /* Get argument count */
- ArgCountOp = Next->Asl.Child->Asl.Child->Asl.Next->Asl.Next;
- ArgCountOp->Asl.Value.Integer = ArgCount;
- break;
+ Child = Op->Asl.Child;
+ while (Child)
+ {
+ ArgCount++;
+ Child = Child->Asl.Next;
}
- Next = Next->Asl.Next;
+ /* Setup ArgCount operand */
+
+ ArgCountOp = Next->Asl.Child->Asl.Child->Asl.Next->Asl.Next;
+ ArgCountOp->Asl.Value.Integer = ArgCount;
+ break;
}
+
+ ACPI_FREE (CallName);
}
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-vendor
mailing list