summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev
diff options
context:
space:
mode:
authoriwasaki <iwasaki@FreeBSD.org>2002-11-27 18:07:48 +0000
committeriwasaki <iwasaki@FreeBSD.org>2002-11-27 18:07:48 +0000
commit2b17a8d498a3e4598c19121ab1fad3e7ced2c699 (patch)
tree89c585f017c40c50fe733a43a36a8a10779f75f5 /sys/contrib/dev
parent3b2a4f1cbea5e9139e6d4710e31efedef37247ac (diff)
downloadFreeBSD-src-2b17a8d498a3e4598c19121ab1fad3e7ced2c699.zip
FreeBSD-src-2b17a8d498a3e4598c19121ab1fad3e7ced2c699.tar.gz
Vendor import of the Intel ACPI CA 20021118 drop.
Approved by: re
Diffstat (limited to 'sys/contrib/dev')
-rw-r--r--sys/contrib/dev/acpica/CHANGES.txt273
-rw-r--r--sys/contrib/dev/acpica/acapps.h13
-rw-r--r--sys/contrib/dev/acpica/acconfig.h8
-rw-r--r--sys/contrib/dev/acpica/acdisasm.h9
-rw-r--r--sys/contrib/dev/acpica/acdispat.h6
-rw-r--r--sys/contrib/dev/acpica/acevents.h4
-rw-r--r--sys/contrib/dev/acpica/acglobal.h8
-rw-r--r--sys/contrib/dev/acpica/acinterp.h11
-rw-r--r--sys/contrib/dev/acpica/aclocal.h6
-rw-r--r--sys/contrib/dev/acpica/acnamesp.h16
-rw-r--r--sys/contrib/dev/acpica/acobject.h3
-rw-r--r--sys/contrib/dev/acpica/acparser.h6
-rw-r--r--sys/contrib/dev/acpica/acpiosxf.h2
-rw-r--r--sys/contrib/dev/acpica/acpixf.h2
-rw-r--r--sys/contrib/dev/acpica/acstruct.h4
-rw-r--r--sys/contrib/dev/acpica/actypes.h102
-rw-r--r--sys/contrib/dev/acpica/acutils.h11
-rw-r--r--sys/contrib/dev/acpica/amlcode.h5
-rw-r--r--sys/contrib/dev/acpica/dbcmds.c7
-rw-r--r--sys/contrib/dev/acpica/dbdisply.c14
-rw-r--r--sys/contrib/dev/acpica/dbexec.c4
-rw-r--r--sys/contrib/dev/acpica/dbfileio.c20
-rw-r--r--sys/contrib/dev/acpica/dbstats.c19
-rw-r--r--sys/contrib/dev/acpica/dbutils.c4
-rw-r--r--sys/contrib/dev/acpica/dmbuffer.c94
-rw-r--r--sys/contrib/dev/acpica/dmopcode.c11
-rw-r--r--sys/contrib/dev/acpica/dmutils.c64
-rw-r--r--sys/contrib/dev/acpica/dsfield.c22
-rw-r--r--sys/contrib/dev/acpica/dsmethod.c4
-rw-r--r--sys/contrib/dev/acpica/dsmthdat.c4
-rw-r--r--sys/contrib/dev/acpica/dsobject.c6
-rw-r--r--sys/contrib/dev/acpica/dsopcode.c4
-rw-r--r--sys/contrib/dev/acpica/dsutils.c44
-rw-r--r--sys/contrib/dev/acpica/dswexec.c17
-rw-r--r--sys/contrib/dev/acpica/dswload.c225
-rw-r--r--sys/contrib/dev/acpica/dswscope.c52
-rw-r--r--sys/contrib/dev/acpica/dswstate.c10
-rw-r--r--sys/contrib/dev/acpica/evevent.c80
-rw-r--r--sys/contrib/dev/acpica/evmisc.c11
-rw-r--r--sys/contrib/dev/acpica/evxface.c6
-rw-r--r--sys/contrib/dev/acpica/evxfregn.c8
-rw-r--r--sys/contrib/dev/acpica/exconfig.c13
-rw-r--r--sys/contrib/dev/acpica/exconvrt.c166
-rw-r--r--sys/contrib/dev/acpica/excreate.c17
-rw-r--r--sys/contrib/dev/acpica/exdump.c76
-rw-r--r--sys/contrib/dev/acpica/exfield.c116
-rw-r--r--sys/contrib/dev/acpica/exfldio.c46
-rw-r--r--sys/contrib/dev/acpica/exmisc.c86
-rw-r--r--sys/contrib/dev/acpica/exmutex.c38
-rw-r--r--sys/contrib/dev/acpica/exnames.c8
-rw-r--r--sys/contrib/dev/acpica/exoparg1.c36
-rw-r--r--sys/contrib/dev/acpica/exoparg2.c67
-rw-r--r--sys/contrib/dev/acpica/exoparg3.c7
-rw-r--r--sys/contrib/dev/acpica/exprep.c26
-rw-r--r--sys/contrib/dev/acpica/exresnte.c16
-rw-r--r--sys/contrib/dev/acpica/exresolv.c27
-rw-r--r--sys/contrib/dev/acpica/exresop.c50
-rw-r--r--sys/contrib/dev/acpica/exstore.c14
-rw-r--r--sys/contrib/dev/acpica/exstoren.c12
-rw-r--r--sys/contrib/dev/acpica/exstorob.c4
-rw-r--r--sys/contrib/dev/acpica/exsystem.c10
-rw-r--r--sys/contrib/dev/acpica/exutils.c33
-rw-r--r--sys/contrib/dev/acpica/hwsleep.c8
-rw-r--r--sys/contrib/dev/acpica/nsaccess.c66
-rw-r--r--sys/contrib/dev/acpica/nsalloc.c178
-rw-r--r--sys/contrib/dev/acpica/nsdump.c147
-rw-r--r--sys/contrib/dev/acpica/nseval.c4
-rw-r--r--sys/contrib/dev/acpica/nsinit.c4
-rw-r--r--sys/contrib/dev/acpica/nsobject.c73
-rw-r--r--sys/contrib/dev/acpica/nssearch.c91
-rw-r--r--sys/contrib/dev/acpica/nsutils.c51
-rw-r--r--sys/contrib/dev/acpica/nsxfeval.c23
-rw-r--r--sys/contrib/dev/acpica/nsxfobj.c4
-rw-r--r--sys/contrib/dev/acpica/psargs.c82
-rw-r--r--sys/contrib/dev/acpica/psopcode.c258
-rw-r--r--sys/contrib/dev/acpica/psparse.c95
-rw-r--r--sys/contrib/dev/acpica/rscalc.c4
-rw-r--r--sys/contrib/dev/acpica/rscreate.c128
-rw-r--r--sys/contrib/dev/acpica/tbconvrt.c28
-rw-r--r--sys/contrib/dev/acpica/tbget.c3
-rw-r--r--sys/contrib/dev/acpica/tbgetall.c11
-rw-r--r--sys/contrib/dev/acpica/tbinstal.c7
-rw-r--r--sys/contrib/dev/acpica/tbrsdt.c3
-rw-r--r--sys/contrib/dev/acpica/tbutils.c6
-rw-r--r--sys/contrib/dev/acpica/tbxfroot.c9
-rw-r--r--sys/contrib/dev/acpica/utcopy.c4
-rw-r--r--sys/contrib/dev/acpica/utdelete.c12
-rw-r--r--sys/contrib/dev/acpica/utglobal.c56
-rw-r--r--sys/contrib/dev/acpica/utmisc.c100
-rw-r--r--sys/contrib/dev/acpica/utobject.c75
90 files changed, 2067 insertions, 1550 deletions
diff --git a/sys/contrib/dev/acpica/CHANGES.txt b/sys/contrib/dev/acpica/CHANGES.txt
index f87c968..3b82a15 100644
--- a/sys/contrib/dev/acpica/CHANGES.txt
+++ b/sys/contrib/dev/acpica/CHANGES.txt
@@ -1,4 +1,277 @@
----------------------------------------
+15 November 2002. Summary of changes for version 20021115.
+
+1) ACPI CA Core Subsystem:
+
+Fixed a memory leak problem where an error during resolution
+of method arguments during a method invocation from another
+method failed to cleanup properly by deleting all successfully
+resolved argument objects.
+
+Fixed a problem where the target of the Index() operator was
+not correctly constructed if the source object was a package.
+This problem has not been detected because the use of a target
+operand with Index() is very rare.
+
+Fixed a problem with the Index() operator where an attempt was
+made to delete the operand objects twice.
+
+Fixed a problem where an attempt was made to delete an operand
+twice during execution of the CondRefOf() operator if the
+target did not exist.
+
+Implemented the first of perhaps several internal create
+object functions that create and initialize a specific object
+type. This consolidates duplicated code wherever the object
+is created, thus shrinking the size of the subsystem.
+
+Implemented improved debug/error messages for errors that
+occur during nested method invocations. All executing method
+pathnames are displayed (with the error) as the call stack is
+unwound - thus simplifying debug.
+
+Fixed a problem introduced in the 10/02 release that caused
+premature deletion of a buffer object if a buffer was used as
+an ASL operand where an integer operand is required (Thus
+causing an implicit object conversion from Buffer to Integer.)
+The change in the 10/02 release was attempting to fix a memory
+leak (albeit incorrectly.)
+
+Code and Data Size: Current core subsystem library sizes are
+shown below. These are the code and data sizes for the
+acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
+and these values do not include any ACPI driver or OSPM code.
+The debug version of the code includes the debug output trace
+mechanism and has a much larger code and data size. Note that
+these values will vary depending on the efficiency of the
+compiler and the compiler options used during generation.
+
+ Previous Release
+ Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
+ Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
+ Current Release:
+ Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
+ Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
+
+
+2) Linux
+
+Changed the implementation of the ACPI semaphores to use
+down() instead of down_interruptable(). It is important that
+the execution of ACPI control methods not be interrupted by
+signals. Methods must run to completion, or the system may be
+left in an unknown/unstable state.
+
+Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
+set. (Shawn Starr)
+
+
+3) iASL Compiler/Disassembler
+
+Changed the default location of output files. All output
+files are now placed in the current directory by default
+instead of in the directory of the source file. This change
+may affect some existing makefiles, but it brings the behavior
+of the compiler in line with other similar tools. The
+location of the output files can be overridden with the -p
+command line switch.
+
+
+----------------------------------------
+11 November 2002. Summary of changes for version 20021111.
+
+
+0) ACPI Specification 2.0B is released and is now available
+at: http://www.acpi.info/index.html
+
+
+1) ACPI CA Core Subsystem:
+
+Implemented support for the ACPI 2.0 SMBus Operation Regions.
+This includes the early detection and handoff of the request
+to the SMBus region handler (avoiding all of the complex field
+support code), and support for the bidirectional return packet
+from an SMBus write operation. This paves the way for the
+development of SMBus drivers in each host operating system.
+
+Fixed a problem where the semaphore WAIT_FOREVER constant was
+defined as 32 bits, but must be 16 bits according to the ACPI
+specification. This had the side effect of causing ASL
+Mutex/Event timeouts even though the ASL code requested a wait
+forever. Changed all internal references to the ACPI timeout
+parameter to 16 bits to prevent future problems. Changed the
+name of WAIT_FOREVER to ACPI_WAIT_FOREVER.
+
+Code and Data Size: Current core subsystem library sizes are
+shown below. These are the code and data sizes for the
+acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
+and these values do not include any ACPI driver or OSPM code.
+The debug version of the code includes the debug output trace
+mechanism and has a much larger code and data size. Note that
+these values will vary depending on the efficiency of the
+compiler and the compiler options used during generation.
+
+ Previous Release
+ Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
+ Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
+ Current Release:
+ Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
+ Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
+
+
+2) Linux
+
+Module loading/unloading fixes (John Cagle)
+
+
+3) iASL Compiler/Disassembler
+
+Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
+
+Implemented support for the disassembly of all SMBus protocol
+keywords (SMBQuick, SMBWord, etc.)
+
+----------------------------------------
+01 November 2002. Summary of changes for version 20021101.
+
+
+1) ACPI CA Core Subsystem:
+
+Fixed a problem where platforms that have a GPE1 block but no
+GPE0 block were not handled correctly. This resulted in a
+"GPE overlap" error message. GPE0 is no longer required.
+
+Removed code added in the previous release that inserted nodes
+into the namespace in alphabetical order. This caused some
+side-effects on various machines. The root cause of the
+problem is still under investigation since in theory, the
+internal ordering of the namespace nodes should not matter.
+
+Enhanced error reporting for the case where a named object is
+not found during control method execution. The full ACPI
+namepath (name reference) of the object that was not found is
+displayed in this case.
+
+Note: as a result of the overhaul of the namespace object
+types in the previous release, the namespace nodes for the
+predefined scopes (_TZ, _PR, etc.) are now of the type
+ACPI_TYPE_LOCAL_SCOPE instead of ACPI_TYPE_ANY. This
+simplifies the namespace management code but may affect code
+that walks the namespace tree looking for specific object
+types.
+
+Code and Data Size: Current core subsystem library sizes are
+shown below. These are the code and data sizes for the
+acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
+and these values do not include any ACPI driver or OSPM code.
+The debug version of the code includes the debug output trace
+mechanism and has a much larger code and data size. Note that
+these values will vary depending on the efficiency of the
+compiler and the compiler options used during generation.
+
+ Previous Release
+ Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
+ Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
+ Current Release:
+ Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
+ Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
+
+
+2) Linux
+
+Fixed a problem introduced in the previous release where the
+Processor and Thermal objects were not recognized and
+installed in /proc. This was related to the scope type change
+described above.
+
+
+3) iASL Compiler/Disassembler
+
+Implemented the -g option to get all of the required ACPI
+tables from the registry and save them to files (Windows
+version of the compiler only.) The required tables are the
+FADT, FACS, and DSDT.
+
+Added ACPI table checksum validation during table disassembly
+in order to catch corrupted tables.
+
+
+----------------------------------------
+22 October 2002. Summary of changes for version 20021022.
+
+1) ACPI CA Core Subsystem:
+
+Implemented a restriction on the Scope operator that the
+target must already exist in the namespace at the time the
+operator is encountered (during table load or method
+execution). In other words, forward references are not
+allowed and Scope() cannot create a new object. This changes
+the previous behavior where the interpreter would create the
+name if not found. This new behavior correctly enables the
+search-to-root algorithm during namespace lookup of the target
+name. Because of this upsearch, this fixes the known Compaq
+_SB_.OKEC problem and makes both the AML interpreter and iASL
+compiler compatible with other ACPI implementations.
+
+Completed a major overhaul of the internal ACPI object types
+for the ACPI Namespace and the associated operand objects.
+Many of these types had become obsolete with the introduction
+of the two-pass namespace load. This cleanup simplifies the
+code and makes the entire namespace load mechanism much
+clearer and easier to understand.
+
+Improved debug output for tracking scope opening/closing to
+help diagnose scoping issues. The old scope name as well as
+the new scope name are displayed. Also improved error
+messages for problems with ASL Mutex objects and error
+messages for GPE problems.
+
+Cleaned up the namespace dump code, removed obsolete code.
+
+All string output (for all namespace/object dumps) now uses
+the common ACPI string output procedure which handles escapes
+properly and does not emit non-printable characters.
+
+Fixed some issues with constants in the 64-bit version of the
+local C library (utclib.c)
+
+
+2) Linux
+
+EC Driver: No longer attempts to acquire the Global Lock at
+interrupt level.
+
+
+3) iASL Compiler/Disassembler
+
+Implemented ACPI 2.0B grammar change that disallows all Type 1
+and 2 opcodes outside of a control method. This means that
+the "executable" operators (versus the "namespace" operators)
+cannot be used at the table level; they can only be used
+within a control method.
+
+Implemented the restriction on the Scope() operator where the
+target must already exist in the namespace at the time the
+operator is encountered (during ASL compilation). In other
+words, forward references are not allowed and Scope() cannot
+create a new object. This makes the iASL compiler compatible
+with other ACPI implementations and makes the Scope()
+implementation adhere to the ACPI specification.
+
+Fixed a problem where namepath optimization for the Alias
+operator was optimizing the wrong path (of the two namepaths.)
+This caused a "Missing alias link" error message.
+
+Fixed a problem where an "unknown reserved name" warning could
+be incorrectly generated for names like "_SB" when the
+trailing underscore is not used in the original ASL.
+
+Fixed a problem where the reserved name check did not handle
+NamePaths with multiple NameSegs correctly. The first nameseg
+of the NamePath was examined instead of the last NameSeg.
+
+
+----------------------------------------
02 October 2002. Summary of changes for this release.
diff --git a/sys/contrib/dev/acpica/acapps.h b/sys/contrib/dev/acpica/acapps.h
index 7dd9b48..458ba4d 100644
--- a/sys/contrib/dev/acpica/acapps.h
+++ b/sys/contrib/dev/acpica/acapps.h
@@ -146,10 +146,18 @@ FlGenerateFilename (
char *Suffix);
ACPI_STATUS
+FlSplitInputPathname (
+ char *InputPath,
+ char **OutDirectoryPath,
+ char **OutFilename);
+
+ACPI_STATUS
AdAmlDisassemble (
BOOLEAN OutToFile,
char *Filename,
- char **OutFilename);
+ char *Prefix,
+ char **OutFilename,
+ BOOLEAN GetAllTables);
void
AdPrintStatistics (void);
@@ -164,7 +172,8 @@ AdDumpTables (void);
ACPI_STATUS
AdGetTables (
- char *Filename);
+ char *Filename,
+ BOOLEAN GetAllTables);
ACPI_STATUS
AdParseTables (void);
diff --git a/sys/contrib/dev/acpica/acconfig.h b/sys/contrib/dev/acpica/acconfig.h
index b746bc1..ce7d3cd 100644
--- a/sys/contrib/dev/acpica/acconfig.h
+++ b/sys/contrib/dev/acpica/acconfig.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acconfig.h - Global configuration constants
- * $Revision: 112 $
+ * $Revision: 118 $
*
*****************************************************************************/
@@ -145,7 +145,7 @@
/* Version string */
-#define ACPI_CA_VERSION 0x20021002
+#define ACPI_CA_VERSION 0x20021115
/* Version of ACPI supported */
@@ -257,6 +257,10 @@
#define ACPI_RSDP_CHECKSUM_LENGTH 20
#define ACPI_RSDP_XCHECKSUM_LENGTH 36
+/* SMBus bidirectional buffer size */
+
+#define ACPI_SMBUS_BUFFER_SIZE 34
+
/******************************************************************************
*
diff --git a/sys/contrib/dev/acpica/acdisasm.h b/sys/contrib/dev/acpica/acdisasm.h
index 00401d2..f0eb26b 100644
--- a/sys/contrib/dev/acpica/acdisasm.h
+++ b/sys/contrib/dev/acpica/acdisasm.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdisasm.h - AML disassembler
- * $Revision: 3 $
+ * $Revision: 5 $
*
*****************************************************************************/
@@ -199,10 +199,6 @@ AcpiDmDumpName (
char *Name);
void
-AcpiDmString (
- char *String);
-
-void
AcpiDmUnicode (
ACPI_PARSE_OBJECT *Op);
@@ -334,6 +330,9 @@ void
AcpiDmBitList (
UINT16 Mask);
+void
+AcpiDmDecodeAttribute (
+ UINT8 Attribute);
/*
* dmresrcl
diff --git a/sys/contrib/dev/acpica/acdispat.h b/sys/contrib/dev/acpica/acdispat.h
index 453bbc9..9ac94e1 100644
--- a/sys/contrib/dev/acpica/acdispat.h
+++ b/sys/contrib/dev/acpica/acdispat.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdispat.h - dispatcher (parser to interpreter interface)
- * $Revision: 54 $
+ * $Revision: 55 $
*
*****************************************************************************/
@@ -469,6 +469,10 @@ ACPI_STATUS
AcpiDsResolveOperands (
ACPI_WALK_STATE *WalkState);
+void
+AcpiDsClearOperands (
+ ACPI_WALK_STATE *WalkState);
+
/*
* dswscope - Scope Stack manipulation
diff --git a/sys/contrib/dev/acpica/acevents.h b/sys/contrib/dev/acpica/acevents.h
index db6f709..baa7cb8 100644
--- a/sys/contrib/dev/acpica/acevents.h
+++ b/sys/contrib/dev/acpica/acevents.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acevents.h - Event subcomponent prototypes and defines
- * $Revision: 79 $
+ * $Revision: 80 $
*
*****************************************************************************/
@@ -154,7 +154,7 @@ AcpiEvIsNotifyObject (
ACPI_STATUS
AcpiEvAcquireGlobalLock(
- UINT32 Timeout);
+ UINT16 Timeout);
ACPI_STATUS
AcpiEvReleaseGlobalLock(
diff --git a/sys/contrib/dev/acpica/acglobal.h b/sys/contrib/dev/acpica/acglobal.h
index 7615f89..0153dfa 100644
--- a/sys/contrib/dev/acpica/acglobal.h
+++ b/sys/contrib/dev/acpica/acglobal.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acglobal.h - Declarations for global variables
- * $Revision: 131 $
+ * $Revision: 132 $
*
*****************************************************************************/
@@ -243,7 +243,7 @@ extern const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_
*
****************************************************************************/
-#define NUM_NS_TYPES INTERNAL_TYPE_INVALID+1
+#define NUM_NS_TYPES ACPI_TYPE_INVALID+1
#if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
#define NUM_PREDEFINED_NAMES 10
@@ -370,8 +370,8 @@ ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_DbScopeNode;
/*
* Statistic globals
*/
-ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCount[INTERNAL_TYPE_NODE_MAX+1];
-ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCount[INTERNAL_TYPE_NODE_MAX+1];
+ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCount[ACPI_TYPE_NS_NODE_MAX+1];
+ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCount[ACPI_TYPE_NS_NODE_MAX+1];
ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCountMisc;
ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCountMisc;
ACPI_EXTERN UINT32 AcpiGbl_NumNodes;
diff --git a/sys/contrib/dev/acpica/acinterp.h b/sys/contrib/dev/acpica/acinterp.h
index 1f9f9d3..be9c087 100644
--- a/sys/contrib/dev/acpica/acinterp.h
+++ b/sys/contrib/dev/acpica/acinterp.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
- * $Revision: 139 $
+ * $Revision: 142 $
*
*****************************************************************************/
@@ -255,7 +255,8 @@ AcpiExReadDataFromField (
ACPI_STATUS
AcpiExWriteDataToField (
ACPI_OPERAND_OBJECT *SourceDesc,
- ACPI_OPERAND_OBJECT *ObjDesc);
+ ACPI_OPERAND_OBJECT *ObjDesc,
+ ACPI_OPERAND_OBJECT **ResultDesc);
/*
* exmisc - ACPI AML (p-code) execution - specific opcodes
@@ -468,7 +469,7 @@ AcpiExSystemResetEvent(
ACPI_STATUS
AcpiExSystemWaitSemaphore (
ACPI_HANDLE Semaphore,
- UINT32 Timeout);
+ UINT16 Timeout);
/*
@@ -704,10 +705,6 @@ AcpiExTruncateFor32bitTable (
ACPI_OPERAND_OBJECT *ObjDesc);
BOOLEAN
-AcpiExValidateObjectType (
- ACPI_OBJECT_TYPE Type);
-
-BOOLEAN
AcpiExAcquireGlobalLock (
UINT32 Rule);
diff --git a/sys/contrib/dev/acpica/aclocal.h b/sys/contrib/dev/acpica/aclocal.h
index dd714d8..f2baeb8 100644
--- a/sys/contrib/dev/acpica/aclocal.h
+++ b/sys/contrib/dev/acpica/aclocal.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
- * $Revision: 176 $
+ * $Revision: 179 $
*
*****************************************************************************/
@@ -118,7 +118,7 @@
#define __ACLOCAL_H__
-#define WAIT_FOREVER ((UINT32) -1)
+#define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */
typedef void* ACPI_MUTEX;
typedef UINT32 ACPI_MUTEX_HANDLE;
@@ -303,7 +303,6 @@ typedef struct AcpiTableDesc
struct AcpiTableDesc *Next;
struct AcpiTableDesc *InstalledDesc;
ACPI_TABLE_HEADER *Pointer;
- void *BasePointer;
UINT8 *AmlStart;
UINT64 PhysicalAddress;
UINT32 AmlLength;
@@ -746,6 +745,7 @@ typedef struct acpi_parseobj_asl
char *Filename;
char *ExternalName;
char *Namepath;
+ char NameSeg[4];
UINT32 ExtraValue;
UINT32 Column;
UINT32 LineNumber;
diff --git a/sys/contrib/dev/acpica/acnamesp.h b/sys/contrib/dev/acpica/acnamesp.h
index e14ef80..d38183d 100644
--- a/sys/contrib/dev/acpica/acnamesp.h
+++ b/sys/contrib/dev/acpica/acnamesp.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
- * $Revision: 127 $
+ * $Revision: 129 $
*
*****************************************************************************/
@@ -269,6 +269,10 @@ void
AcpiNsDeleteChildren (
ACPI_NAMESPACE_NODE *Parent);
+int
+AcpiNsCompareNames (
+ char *Name1,
+ char *Name2);
/*
* Namespace modification - nsmodify
@@ -372,17 +376,13 @@ AcpiNsGetObjectValue (
/*
- * Parent/Child/Peer utility functions - nsfamily
+ * Parent/Child/Peer utility functions
*/
ACPI_NAME
AcpiNsFindParentName (
ACPI_NAMESPACE_NODE *NodeToSearch);
-BOOLEAN
-AcpiNsExistDownstreamSibling (
- ACPI_NAMESPACE_NODE *ThisNode);
-
/*
* Name and Scope manipulation - nsnames
@@ -488,8 +488,8 @@ AcpiNsSearchNode (
void
AcpiNsInstallNode (
ACPI_WALK_STATE *WalkState,
- ACPI_NAMESPACE_NODE *ParentNode, /* Parent */
- ACPI_NAMESPACE_NODE *Node, /* New Child*/
+ ACPI_NAMESPACE_NODE *ParentNode,
+ ACPI_NAMESPACE_NODE *Node,
ACPI_OBJECT_TYPE Type);
diff --git a/sys/contrib/dev/acpica/acobject.h b/sys/contrib/dev/acpica/acobject.h
index 007e548..566758d 100644
--- a/sys/contrib/dev/acpica/acobject.h
+++ b/sys/contrib/dev/acpica/acobject.h
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
- * $Revision: 113 $
+ * $Revision: 114 $
*
*****************************************************************************/
@@ -290,6 +290,7 @@ typedef struct AcpiObjectMutex
void *Semaphore;
union acpi_operand_obj *Prev; /* Link for list of acquired mutexes */
union acpi_operand_obj *Next; /* Link for list of acquired mutexes */
+ ACPI_NAMESPACE_NODE *Node; /* containing object */
} ACPI_OBJECT_MUTEX;
diff --git a/sys/contrib/dev/acpica/acparser.h b/sys/contrib/dev/acpica/acparser.h
index 5df55df..36bba92 100644
--- a/sys/contrib/dev/acpica/acparser.h
+++ b/sys/contrib/dev/acpica/acparser.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: acparser.h - AML Parser subcomponent prototypes and defines
- * $Revision: 62 $
+ * $Revision: 63 $
*
*****************************************************************************/
@@ -180,9 +180,9 @@ AcpiPsGetNextSimpleArg (
ACPI_STATUS
AcpiPsGetNextNamepath (
+ ACPI_WALK_STATE *WalkState,
ACPI_PARSE_STATE *ParserState,
ACPI_PARSE_OBJECT *Arg,
- UINT32 *ArgCount,
BOOLEAN MethodCall);
ACPI_PARSE_OBJECT *
@@ -191,9 +191,9 @@ AcpiPsGetNextField (
ACPI_STATUS
AcpiPsGetNextArg (
+ ACPI_WALK_STATE *WalkState,
ACPI_PARSE_STATE *ParserState,
UINT32 ArgType,
- UINT32 *ArgCount,
ACPI_PARSE_OBJECT **ReturnArg);
diff --git a/sys/contrib/dev/acpica/acpiosxf.h b/sys/contrib/dev/acpica/acpiosxf.h
index 2bd108c..e96dcb9 100644
--- a/sys/contrib/dev/acpica/acpiosxf.h
+++ b/sys/contrib/dev/acpica/acpiosxf.h
@@ -209,7 +209,7 @@ ACPI_STATUS
AcpiOsWaitSemaphore (
ACPI_HANDLE Handle,
UINT32 Units,
- UINT32 Timeout);
+ UINT16 Timeout);
ACPI_STATUS
AcpiOsSignalSemaphore (
diff --git a/sys/contrib/dev/acpica/acpixf.h b/sys/contrib/dev/acpica/acpixf.h
index 8ea681e..7dddf89 100644
--- a/sys/contrib/dev/acpica/acpixf.h
+++ b/sys/contrib/dev/acpica/acpixf.h
@@ -372,7 +372,7 @@ AcpiInstallGpeHandler (
ACPI_STATUS
AcpiAcquireGlobalLock (
- UINT32 Timeout,
+ UINT16 Timeout,
UINT32 *Handle);
ACPI_STATUS
diff --git a/sys/contrib/dev/acpica/acstruct.h b/sys/contrib/dev/acpica/acstruct.h
index 30323a6..7b12f76 100644
--- a/sys/contrib/dev/acpica/acstruct.h
+++ b/sys/contrib/dev/acpica/acstruct.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acstruct.h - Internal structs
- * $Revision: 19 $
+ * $Revision: 20 $
*
*****************************************************************************/
@@ -150,6 +150,8 @@ typedef struct acpi_walk_state
UINT8 ReturnUsed;
UINT8 WalkType;
UINT16 Opcode; /* Current AML opcode */
+ UINT8 ScopeDepth;
+ UINT8 Reserved1;
UINT32 ArgCount; /* push for fixed or var args */
UINT32 AmlOffset;
UINT32 ArgTypes;
diff --git a/sys/contrib/dev/acpica/actypes.h b/sys/contrib/dev/acpica/actypes.h
index 9523371..420ac3b 100644
--- a/sys/contrib/dev/acpica/actypes.h
+++ b/sys/contrib/dev/acpica/actypes.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actypes.h - Common data types for the entire ACPI subsystem
- * $Revision: 239 $
+ * $Revision: 241 $
*
*****************************************************************************/
@@ -133,7 +133,7 @@
/*
- * Data types - Fixed across all compilation models
+ * Data types - Fixed across all compilation models (16/32/64)
*
* BOOLEAN Logical Boolean.
* INT8 8-bit (1 byte) signed value
@@ -182,6 +182,7 @@ typedef UINT64 ACPI_SIZE;
#elif ACPI_MACHINE_WIDTH == 16
+
/*
* 16-bit type definitions
*/
@@ -224,6 +225,7 @@ typedef UINT16 ACPI_SIZE;
#elif ACPI_MACHINE_WIDTH == 32
+
/*
* 32-bit type definitions (default)
*/
@@ -259,7 +261,6 @@ typedef UINT32 ACPI_SIZE;
/*
* Miscellaneous common types
*/
-
typedef UINT32 UINT32_BIT;
typedef NATIVE_UINT ACPI_PTRDIFF;
typedef char NATIVE_CHAR;
@@ -317,7 +318,6 @@ typedef struct AcpiPointer
/*
* Useful defines
*/
-
#ifdef FALSE
#undef FALSE
#endif
@@ -336,7 +336,6 @@ typedef struct AcpiPointer
/*
* Local datatypes
*/
-
typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */
typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */
typedef char* ACPI_STRING; /* Null terminated ASCII string */
@@ -405,7 +404,6 @@ typedef UINT64 ACPI_INTEGER;
/*
* Constants with special meanings
*/
-
#define ACPI_ROOT_OBJECT (ACPI_HANDLE) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR)
@@ -477,7 +475,6 @@ typedef UINT64 ACPI_INTEGER;
/*
* Table types. These values are passed to the table related APIs
*/
-
typedef UINT32 ACPI_TABLE_TYPE;
#define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0
@@ -492,15 +489,14 @@ typedef UINT32 ACPI_TABLE_TYPE;
/*
- * Types associated with names. The first group of
- * values correspond to the definition of the ACPI
- * ObjectType operator (See the ACPI Spec). Therefore,
+ * Types associated with ACPI names and objects. The first group of
+ * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition
+ * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore,
* only add to the first group if the spec changes.
*
- * Types must be kept in sync with the AcpiNsProperties
- * and AcpiNsTypeNames arrays
+ * Types must be kept in sync with the global AcpiNsProperties
+ * and AcpiNsTypeNames arrays.
*/
-
typedef UINT32 ACPI_OBJECT_TYPE;
#define ACPI_TYPE_ANY 0x00
@@ -521,52 +517,45 @@ typedef UINT32 ACPI_OBJECT_TYPE;
#define ACPI_TYPE_DDB_HANDLE 0x0F
#define ACPI_TYPE_DEBUG_OBJECT 0x10
-#define ACPI_TYPE_MAX 0x10
+#define ACPI_TYPE_EXTERNAL_MAX 0x10
/*
- * This section contains object types that do not relate to the ACPI ObjectType operator.
- * They are used for various internal purposes only. If new predefined ACPI_TYPEs are
- * added (via the ACPI specification), these internal types must move upwards.
- * Also, values exceeding the largest official ACPI ObjectType must not overlap with
- * defined AML opcodes.
+ * These are object types that do not map directly to the ACPI
+ * ObjectType() operator. They are used for various internal purposes only.
+ * If new predefined ACPI_TYPEs are added (via the ACPI specification), these
+ * internal types must move upwards. (There is code that depends on these
+ * values being contiguous with the external types above.)
*/
-#define INTERNAL_TYPE_BEGIN 0x11
-
-#define INTERNAL_TYPE_REGION_FIELD 0x11
-#define INTERNAL_TYPE_BANK_FIELD 0x12
-#define INTERNAL_TYPE_INDEX_FIELD 0x13
-#define INTERNAL_TYPE_REFERENCE 0x14 /* Arg#, Local#, Name, Debug; used only in descriptors */
-#define INTERNAL_TYPE_ALIAS 0x15
-#define INTERNAL_TYPE_NOTIFY 0x16
-#define INTERNAL_TYPE_ADDRESS_HANDLER 0x17
-#define INTERNAL_TYPE_RESOURCE 0x18
-#define INTERNAL_TYPE_RESOURCE_FIELD 0x19
-
+#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11
+#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12
+#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13
+#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */
+#define ACPI_TYPE_LOCAL_ALIAS 0x15
+#define ACPI_TYPE_LOCAL_NOTIFY 0x16
+#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x17
+#define ACPI_TYPE_LOCAL_RESOURCE 0x18
+#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x19
+#define ACPI_TYPE_LOCAL_SCOPE 0x1A /* 1 Name, multiple ObjectList Nodes */
+
+#define ACPI_TYPE_NS_NODE_MAX 0x1A /* Last typecode used within a NS Node */
-#define INTERNAL_TYPE_NODE_MAX 0x19
-
-/* These are pseudo-types because there are never any namespace nodes with these types */
+/*
+ * These are special object types that never appear in
+ * a Namespace node, only in an ACPI_OPERAND_OBJECT
+ */
+#define ACPI_TYPE_LOCAL_EXTRA 0x1B
+#define ACPI_TYPE_LOCAL_DATA 0x1C
-#define INTERNAL_TYPE_FIELD_DEFN 0x1A /* Name, ByteConst, multiple FieldElement */
-#define INTERNAL_TYPE_BANK_FIELD_DEFN 0x1B /* 2 Name,DWordConst,ByteConst,multi FieldElement */
-#define INTERNAL_TYPE_INDEX_FIELD_DEFN 0x1C /* 2 Name, ByteConst, multiple FieldElement */
-#define INTERNAL_TYPE_IF 0x1D
-#define INTERNAL_TYPE_ELSE 0x1E
-#define INTERNAL_TYPE_WHILE 0x1F
-#define INTERNAL_TYPE_SCOPE 0x20 /* Name, multiple Node */
-#define INTERNAL_TYPE_DEF_ANY 0x21 /* type is Any, suppress search of enclosing scopes */
-#define INTERNAL_TYPE_EXTRA 0x22
-#define INTERNAL_TYPE_DATA 0x23
+#define ACPI_TYPE_LOCAL_MAX 0x1C
-#define INTERNAL_TYPE_MAX 0x23
+/* All types above here are invalid */
-#define INTERNAL_TYPE_INVALID 0x24
+#define ACPI_TYPE_INVALID 0x1D
#define ACPI_TYPE_NOT_FOUND 0xFF
/*
- * Bitmapped ACPI types
- * Used internally only
+ * Bitmapped ACPI types. Used internally only
*/
#define ACPI_BTYPE_ANY 0x00000000
#define ACPI_BTYPE_INTEGER 0x00000001
@@ -601,12 +590,12 @@ typedef UINT32 ACPI_OBJECT_TYPE;
*/
#define ACPI_READ 0
#define ACPI_WRITE 1
+#define ACPI_IO_MASK 1
/*
* AcpiEvent Types: Fixed & General Purpose
*/
-
typedef UINT32 ACPI_EVENT_TYPE;
#define ACPI_EVENT_FIXED 0
@@ -615,7 +604,6 @@ typedef UINT32 ACPI_EVENT_TYPE;
/*
* Fixed events
*/
-
#define ACPI_EVENT_PMTIMER 0
#define ACPI_EVENT_GLOBAL 1
#define ACPI_EVENT_POWER_BUTTON 2
@@ -634,9 +622,7 @@ typedef UINT32 ACPI_EVENT_TYPE;
/*
* GPEs
*/
-
#define ACPI_EVENT_WAKE_ENABLE 0x1
-
#define ACPI_EVENT_WAKE_DISABLE 0x1
@@ -669,7 +655,7 @@ typedef UINT32 ACPI_EVENT_STATUS;
#define ACPI_DEVICE_NOTIFY 1
#define ACPI_MAX_NOTIFY_HANDLER_TYPE 1
-#define ACPI_MAX_SYS_NOTIFY 0x7f
+#define ACPI_MAX_SYS_NOTIFY 0x7f
/* Address Space (Operation Region) Types */
@@ -717,10 +703,10 @@ typedef UINT8 ACPI_ADR_SPACE_TYPE;
#define ACPI_BITREG_MAX 0x13
#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1
+
/*
* External ACPI object definition
*/
-
typedef union AcpiObj
{
ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */
@@ -779,7 +765,6 @@ typedef union AcpiObj
/*
* List of objects, used as a parameter list for control method evaluation
*/
-
typedef struct AcpiObjList
{
UINT32 Count;
@@ -791,7 +776,6 @@ typedef struct AcpiObjList
/*
* Miscellaneous common Data Structures used by the interfaces
*/
-
#define ACPI_NO_BUFFER 0
#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1)
#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2)
@@ -807,7 +791,6 @@ typedef struct
/*
* NameType for AcpiGetName
*/
-
#define ACPI_FULL_PATHNAME 0
#define ACPI_SINGLE_NAME 1
#define ACPI_NAME_TYPE_MAX 1
@@ -816,7 +799,6 @@ typedef struct
/*
* Structure and flags for AcpiGetSystemInfo
*/
-
#define ACPI_SYS_MODE_UNKNOWN 0x0000
#define ACPI_SYS_MODE_ACPI 0x0001
#define ACPI_SYS_MODE_LEGACY 0x0002
@@ -836,7 +818,6 @@ typedef struct AcpiTableInfo
/*
* System info returned by AcpiGetSystemInfo()
*/
-
typedef struct _AcpiSysInfo
{
UINT32 AcpiCaVersion;
@@ -855,7 +836,6 @@ typedef struct _AcpiSysInfo
/*
* Various handlers and callback procedures
*/
-
typedef
UINT32 (*ACPI_EVENT_HANDLER) (
void *Context);
@@ -1092,7 +1072,7 @@ typedef struct
/*
* END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
- * needed because it has no fields
+ * needed because it has no fields
*/
typedef struct
diff --git a/sys/contrib/dev/acpica/acutils.h b/sys/contrib/dev/acpica/acutils.h
index f2470fe..e20dec6 100644
--- a/sys/contrib/dev/acpica/acutils.h
+++ b/sys/contrib/dev/acpica/acutils.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
- * $Revision: 146 $
+ * $Revision: 148 $
*
*****************************************************************************/
@@ -622,6 +622,10 @@ BOOLEAN
AcpiUtValidInternalObject (
void *Object);
+ACPI_OPERAND_OBJECT *
+AcpiUtCreateBufferObject (
+ ACPI_SIZE BufferSize);
+
/*
* UtRefCnt - Object reference count management
@@ -728,6 +732,11 @@ AcpiUtDeleteObjectCache (
* utmisc
*/
+void
+AcpiUtPrintString (
+ char *String,
+ UINT8 MaxLength);
+
ACPI_STATUS
AcpiUtDivide (
ACPI_INTEGER *InDividend,
diff --git a/sys/contrib/dev/acpica/amlcode.h b/sys/contrib/dev/acpica/amlcode.h
index 093ab0f..024b914 100644
--- a/sys/contrib/dev/acpica/amlcode.h
+++ b/sys/contrib/dev/acpica/amlcode.h
@@ -3,7 +3,7 @@
* Name: amlcode.h - Definitions for AML, as included in "definition blocks"
* Declarations and definitions contained herein are derived
* directly from the ACPI specification.
- * $Revision: 70 $
+ * $Revision: 71 $
*
*****************************************************************************/
@@ -553,7 +553,8 @@ typedef enum
AML_FIELD_ATTRIB_SMB_BYTE = 0x06,
AML_FIELD_ATTRIB_SMB_WORD = 0x08,
AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A,
- AML_FIELD_ATTRIB_SMB_CALL = 0x0E
+ AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C,
+ AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D
} AML_ACCESS_ATTRIBUTE;
diff --git a/sys/contrib/dev/acpica/dbcmds.c b/sys/contrib/dev/acpica/dbcmds.c
index af122aa..ec0596c 100644
--- a/sys/contrib/dev/acpica/dbcmds.c
+++ b/sys/contrib/dev/acpica/dbcmds.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbcmds - debug commands and output routines
- * $Revision: 88 $
+ * $Revision: 90 $
*
******************************************************************************/
@@ -412,7 +412,6 @@ AcpiDbSetMethodCallBreakpoint (
return;
}
-
AcpiGbl_StepToNextCall = TRUE;
}
@@ -1053,7 +1052,7 @@ ErrorExit:
*
* RETURN: None
*
- * DESCRIPTION:
+ * DESCRIPTION: Display the resource objects associated with a device.
*
******************************************************************************/
@@ -1220,7 +1219,7 @@ AcpiDbIntegrityWalk (
Node, ACPI_GET_DESCRIPTOR_TYPE (Node));
}
- if (Node->Type > INTERNAL_TYPE_MAX)
+ if (Node->Type > ACPI_TYPE_LOCAL_MAX)
{
AcpiOsPrintf ("Invalid Object Type for Node %p, Type = %X\n",
Node, Node->Type);
diff --git a/sys/contrib/dev/acpica/dbdisply.c b/sys/contrib/dev/acpica/dbdisply.c
index 9c0ad34..9d6e798 100644
--- a/sys/contrib/dev/acpica/dbdisply.c
+++ b/sys/contrib/dev/acpica/dbdisply.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbdisply - debug display commands
- * $Revision: 79 $
+ * $Revision: 81 $
*
******************************************************************************/
@@ -413,7 +413,7 @@ AcpiDbDecodeInternalObject (
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
{
- AcpiOsPrintf ("%p", ObjDesc);
+ AcpiOsPrintf (" %p", ObjDesc);
return;
}
@@ -456,7 +456,7 @@ AcpiDbDecodeInternalObject (
default:
- AcpiOsPrintf ("%p", ObjDesc);
+ AcpiOsPrintf (" %p", ObjDesc);
break;
}
}
@@ -480,8 +480,8 @@ AcpiDbDecodeNode (
{
- AcpiOsPrintf ("<Node> Name %4.4s Type-%s",
- Node->Name.Ascii, AcpiUtGetTypeName (Node->Type));
+ AcpiOsPrintf ("<Node> Name %4.4s",
+ Node->Name.Ascii);
if (Node->Flags & ANOBJ_METHOD_ARG)
{
@@ -544,7 +544,7 @@ AcpiDbDisplayInternalObject (
case ACPI_DESC_TYPE_OPERAND:
Type = ACPI_GET_OBJECT_TYPE (ObjDesc);
- if (Type > INTERNAL_TYPE_MAX)
+ if (Type > ACPI_TYPE_LOCAL_MAX)
{
AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type);
return;
@@ -554,7 +554,7 @@ AcpiDbDisplayInternalObject (
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
switch (ObjDesc->Reference.Opcode)
{
diff --git a/sys/contrib/dev/acpica/dbexec.c b/sys/contrib/dev/acpica/dbexec.c
index 5bb5edf..d4ccd64 100644
--- a/sys/contrib/dev/acpica/dbexec.c
+++ b/sys/contrib/dev/acpica/dbexec.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbexec - debugger control method execution
- * $Revision: 45 $
+ * $Revision: 46 $
*
******************************************************************************/
@@ -500,7 +500,7 @@ AcpiDbCreateExecutionThreads (
i = NumThreads;
while (i) /* Brain damage for OSD implementations that only support wait of 1 unit */
{
- Status = AcpiOsWaitSemaphore (ThreadGate, 1, WAIT_FOREVER);
+ Status = AcpiOsWaitSemaphore (ThreadGate, 1, ACPI_WAIT_FOREVER);
i--;
}
diff --git a/sys/contrib/dev/acpica/dbfileio.c b/sys/contrib/dev/acpica/dbfileio.c
index 12f970b..f03ebc3 100644
--- a/sys/contrib/dev/acpica/dbfileio.c
+++ b/sys/contrib/dev/acpica/dbfileio.c
@@ -2,7 +2,7 @@
*
* Module Name: dbfileio - Debugger file I/O commands. These can't usually
* be used when running the debugger in Ring 0 (Kernel mode)
- * $Revision: 68 $
+ * $Revision: 69 $
*
******************************************************************************/
@@ -332,6 +332,10 @@ AcpiDbLoadTable(
Actual = fread (AmlStart, 1, (size_t) AmlLength, fp);
if (Actual == AmlLength)
{
+ /* Now validate the checksum */
+
+ Status = AcpiTbVerifyTableChecksum (*TablePtr);
+
return (AE_OK);
}
@@ -420,6 +424,18 @@ AeLocalLoadTable (
#ifdef ACPI_APPLICATION
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiDbGetAcpiTable
+ *
+ * PARAMETERS: Filname - File where table is located
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Get an ACPI table from a file
+ *
+ ******************************************************************************/
+
ACPI_STATUS
AcpiDbGetAcpiTable (
NATIVE_CHAR *Filename)
@@ -428,6 +444,7 @@ AcpiDbGetAcpiTable (
UINT32 TableLength;
ACPI_STATUS Status;
+
/* Open the file */
fp = fopen (Filename, "rb");
@@ -454,6 +471,7 @@ AcpiDbGetAcpiTable (
}
#endif
+
/*******************************************************************************
*
* FUNCTION: AcpiDbLoadAcpiTable
diff --git a/sys/contrib/dev/acpica/dbstats.c b/sys/contrib/dev/acpica/dbstats.c
index fc95cc4..37de8fb 100644
--- a/sys/contrib/dev/acpica/dbstats.c
+++ b/sys/contrib/dev/acpica/dbstats.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbstats - Generation and display of ACPI table statistics
- * $Revision: 63 $
+ * $Revision: 64 $
*
******************************************************************************/
@@ -179,7 +179,7 @@ AcpiDbEnumerateObject (
AcpiGbl_NumObjects++;
- if (ACPI_GET_OBJECT_TYPE (ObjDesc) > INTERNAL_TYPE_NODE_MAX)
+ if (ACPI_GET_OBJECT_TYPE (ObjDesc) > ACPI_TYPE_NS_NODE_MAX)
{
AcpiGbl_ObjTypeCountMisc++;
}
@@ -193,6 +193,7 @@ AcpiDbEnumerateObject (
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
case ACPI_TYPE_PACKAGE:
+
for (i = 0; i < ObjDesc->Package.Count; i++)
{
AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]);
@@ -200,12 +201,14 @@ AcpiDbEnumerateObject (
break;
case ACPI_TYPE_DEVICE:
+
AcpiDbEnumerateObject (ObjDesc->Device.SysHandler);
AcpiDbEnumerateObject (ObjDesc->Device.DrvHandler);
AcpiDbEnumerateObject (ObjDesc->Device.AddrHandler);
break;
case ACPI_TYPE_BUFFER_FIELD:
+
if (AcpiNsGetSecondaryObject (ObjDesc))
{
AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++;
@@ -213,22 +216,26 @@ AcpiDbEnumerateObject (
break;
case ACPI_TYPE_REGION:
- AcpiGbl_ObjTypeCount [INTERNAL_TYPE_REGION_FIELD ]++;
+
+ AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++;
AcpiDbEnumerateObject (ObjDesc->Region.AddrHandler);
break;
case ACPI_TYPE_POWER:
+
AcpiDbEnumerateObject (ObjDesc->PowerResource.SysHandler);
AcpiDbEnumerateObject (ObjDesc->PowerResource.DrvHandler);
break;
case ACPI_TYPE_PROCESSOR:
+
AcpiDbEnumerateObject (ObjDesc->Processor.SysHandler);
AcpiDbEnumerateObject (ObjDesc->Processor.DrvHandler);
AcpiDbEnumerateObject (ObjDesc->Processor.AddrHandler);
break;
case ACPI_TYPE_THERMAL:
+
AcpiDbEnumerateObject (ObjDesc->ThermalZone.SysHandler);
AcpiDbEnumerateObject (ObjDesc->ThermalZone.DrvHandler);
AcpiDbEnumerateObject (ObjDesc->ThermalZone.AddrHandler);
@@ -273,7 +280,7 @@ AcpiDbClassifyOneObject (
AcpiDbEnumerateObject (ObjDesc);
Type = Node->Type;
- if (Type > INTERNAL_TYPE_NODE_MAX)
+ if (Type > ACPI_TYPE_NS_NODE_MAX)
{
AcpiGbl_NodeTypeCountMisc++;
}
@@ -334,7 +341,7 @@ AcpiDbCountNamespaceObjects (
AcpiGbl_NumObjects = 0;
AcpiGbl_ObjTypeCountMisc = 0;
- for (i = 0; i < (INTERNAL_TYPE_NODE_MAX -1); i++)
+ for (i = 0; i < (ACPI_TYPE_NS_NODE_MAX -1); i++)
{
AcpiGbl_ObjTypeCount [i] = 0;
AcpiGbl_NodeTypeCount [i] = 0;
@@ -414,7 +421,7 @@ AcpiDbDisplayStatistics (
AcpiOsPrintf ("%16.16s %10.10s %10.10s\n", "ACPI_TYPE", "NODES", "OBJECTS");
- for (i = 0; i < INTERNAL_TYPE_NODE_MAX; i++)
+ for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)
{
AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),
AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);
diff --git a/sys/contrib/dev/acpica/dbutils.c b/sys/contrib/dev/acpica/dbutils.c
index 5ecdc63..cd4f435 100644
--- a/sys/contrib/dev/acpica/dbutils.c
+++ b/sys/contrib/dev/acpica/dbutils.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbutils - AML debugger utilities
- * $Revision: 56 $
+ * $Revision: 57 $
*
******************************************************************************/
@@ -261,7 +261,7 @@ AcpiDbDumpObject (
break;
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
AcpiOsPrintf ("[Object Reference] = %p\n", ObjDesc->Reference.Handle);
break;
diff --git a/sys/contrib/dev/acpica/dmbuffer.c b/sys/contrib/dev/acpica/dmbuffer.c
index 8d88136..32271db7 100644
--- a/sys/contrib/dev/acpica/dmbuffer.c
+++ b/sys/contrib/dev/acpica/dmbuffer.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dmbuffer - AML disassembler, buffer and string support
- * $Revision: 7 $
+ * $Revision: 8 $
*
******************************************************************************/
@@ -221,7 +221,7 @@ AcpiDmByteList (
case ACPI_DASM_STRING:
AcpiDmIndent (Info->Level);
- AcpiDmString ((char *) ByteData);
+ AcpiUtPrintString ((char *) ByteData, ACPI_UINT8_MAX);
AcpiOsPrintf ("\n");
break;
@@ -382,96 +382,6 @@ AcpiDmIsStringBuffer (
/*******************************************************************************
*
- * FUNCTION: AcpiDmString
- *
- * PARAMETERS: String - Null terminated ASCII string
- *
- * RETURN: None
- *
- * DESCRIPTION: Dump an ASCII string with support for ACPI-defined escape
- * sequences.
- *
- ******************************************************************************/
-
-void
-AcpiDmString (
- char *String)
-{
- UINT32 i;
-
-
- if (!String)
- {
- AcpiOsPrintf ("<\"NULL STRING PTR\">");
- return;
- }
-
- AcpiOsPrintf ("\"");
- for (i = 0; String[i]; i++)
- {
- /* Escape sequences */
-
- switch (String[i])
- {
- case 0x07:
- AcpiOsPrintf ("\\a"); /* BELL */
- break;
-
- case 0x08:
- AcpiOsPrintf ("\\b"); /* BACKSPACE */
- break;
-
- case 0x0C:
- AcpiOsPrintf ("\\f"); /* FORMFEED */
- break;
-
- case 0x0A:
- AcpiOsPrintf ("\\n"); /* LINEFEED */
- break;
-
- case 0x0D:
- AcpiOsPrintf ("\\r"); /* CARRIAGE RETURN*/
- break;
-
- case 0x09:
- AcpiOsPrintf ("\\t"); /* HORIZONTAL TAB */
- break;
-
- case 0x0B:
- AcpiOsPrintf ("\\v"); /* VERTICAL TAB */
- break;
-
- case '\'': /* Single Quote */
- case '\"': /* Double Quote */
- case '\\': /* Backslash */
- AcpiOsPrintf ("\\%c", (int) String[i]);
- break;
-
- default:
-
- /* Check for printable character or hex escape */
-
- if (ACPI_IS_PRINT (String[i]))
- {
- /* This is a normal character */
-
- AcpiOsPrintf ("%c", (int) String[i]);
- }
- else
- {
- /* All others will be Hex escapes */
-
- AcpiOsPrintf ("\\x%2.2X", (INT32) String[i]);
- }
- break;
- }
- }
- AcpiOsPrintf ("\"");
-}
-
-
-/*******************************************************************************
- *
* FUNCTION: AcpiDmUnicode
*
* PARAMETERS: Op - Byte List op containing Unicode string
diff --git a/sys/contrib/dev/acpica/dmopcode.c b/sys/contrib/dev/acpica/dmopcode.c
index 2a35fd3..8f89c66 100644
--- a/sys/contrib/dev/acpica/dmopcode.c
+++ b/sys/contrib/dev/acpica/dmopcode.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dmopcode - AML disassembler, specific AML opcodes
- * $Revision: 77 $
+ * $Revision: 79 $
*
******************************************************************************/
@@ -458,7 +458,7 @@ AcpiDmDisassembleOneOp (
case AML_STRING_OP:
- AcpiDmString (Op->Common.Value.String);
+ AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT8_MAX);
break;
@@ -551,10 +551,11 @@ AcpiDmDisassembleOneOp (
case AML_INT_ACCESSFIELD_OP:
- AcpiOsPrintf ("AccessAs (%s, 0x%.2X)",
- AcpiGbl_AccessTypes [Op->Common.Value.Integer32 >> 8],
- Op->Common.Value.Integer32 & 0x0F);
+ AcpiOsPrintf ("AccessAs (%s, ",
+ AcpiGbl_AccessTypes [Op->Common.Value.Integer32 >> 8]);
+ AcpiDmDecodeAttribute ((UINT8) Op->Common.Value.Integer32);
+ AcpiOsPrintf (")");
AcpiDmCommaIfFieldMember (Op);
break;
diff --git a/sys/contrib/dev/acpica/dmutils.c b/sys/contrib/dev/acpica/dmutils.c
index bb6fca0..add7780 100644
--- a/sys/contrib/dev/acpica/dmutils.c
+++ b/sys/contrib/dev/acpica/dmutils.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dmutils - AML disassembler utilities
- * $Revision: 4 $
+ * $Revision: 5 $
*
******************************************************************************/
@@ -289,6 +289,68 @@ const char *AcpiGbl_SIZDecode[4] =
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDecodeAttribute
+ *
+ * PARAMETERS: Attribute - Attribute field of AccessAs keyword
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Decode the AccessAs attribute byte. (Mostly SMBus stuff)
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDecodeAttribute (
+ UINT8 Attribute)
+{
+
+ switch (Attribute)
+ {
+ case AML_FIELD_ATTRIB_SMB_QUICK:
+
+ AcpiOsPrintf ("SMBQuick");
+ break;
+
+ case AML_FIELD_ATTRIB_SMB_SEND_RCV:
+
+ AcpiOsPrintf ("SMBSendReceive");
+ break;
+
+ case AML_FIELD_ATTRIB_SMB_BYTE:
+
+ AcpiOsPrintf ("SMBByte");
+ break;
+
+ case AML_FIELD_ATTRIB_SMB_WORD:
+
+ AcpiOsPrintf ("SMBWord");
+ break;
+
+ case AML_FIELD_ATTRIB_SMB_WORD_CALL:
+
+ AcpiOsPrintf ("SMBProcessCall");
+ break;
+
+ case AML_FIELD_ATTRIB_SMB_BLOCK:
+
+ AcpiOsPrintf ("SMBBlock");
+ break;
+
+ case AML_FIELD_ATTRIB_SMB_BLOCK_CALL:
+
+ AcpiOsPrintf ("SMBBlockProcessCall");
+ break;
+
+ default:
+
+ AcpiOsPrintf ("0x%.2X", Attribute);
+ break;
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDmIndent
*
* PARAMETERS: Level - Current source code indentation level
diff --git a/sys/contrib/dev/acpica/dsfield.c b/sys/contrib/dev/acpica/dsfield.c
index 22359ef..13c7bb2 100644
--- a/sys/contrib/dev/acpica/dsfield.c
+++ b/sys/contrib/dev/acpica/dsfield.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsfield - Dispatcher field routines
- * $Revision: 68 $
+ * $Revision: 69 $
*
*****************************************************************************/
@@ -200,7 +200,7 @@ AcpiDsCreateBufferField (
* Enter the NameString into the namespace
*/
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
- INTERNAL_TYPE_DEF_ANY, ACPI_IMODE_LOAD_PASS1,
+ ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1,
Flags, WalkState, &(Node));
if (ACPI_FAILURE (Status))
{
@@ -454,7 +454,7 @@ AcpiDsCreateField (
/* Each remaining arg is a Named Field */
- Info.FieldType = INTERNAL_TYPE_REGION_FIELD;
+ Info.FieldType = ACPI_TYPE_LOCAL_REGION_FIELD;
Info.RegionNode = RegionNode;
Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
@@ -496,17 +496,17 @@ AcpiDsInitFieldObjects (
{
case AML_FIELD_OP:
Arg = AcpiPsGetArg (Op, 2);
- Type = INTERNAL_TYPE_REGION_FIELD;
+ Type = ACPI_TYPE_LOCAL_REGION_FIELD;
break;
case AML_BANK_FIELD_OP:
Arg = AcpiPsGetArg (Op, 4);
- Type = INTERNAL_TYPE_BANK_FIELD;
+ Type = ACPI_TYPE_LOCAL_BANK_FIELD;
break;
case AML_INDEX_FIELD_OP:
Arg = AcpiPsGetArg (Op, 3);
- Type = INTERNAL_TYPE_INDEX_FIELD;
+ Type = ACPI_TYPE_LOCAL_INDEX_FIELD;
break;
default:
@@ -595,11 +595,11 @@ AcpiDsCreateBankField (
}
}
- /* Second arg is the Bank Register (must already exist) */
+ /* Second arg is the Bank Register (Field) (must already exist) */
Arg = Arg->Common.Next;
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
- INTERNAL_TYPE_BANK_FIELD_DEFN, ACPI_IMODE_EXECUTE,
+ ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode);
if (ACPI_FAILURE (Status))
{
@@ -619,7 +619,7 @@ AcpiDsCreateBankField (
/* Each remaining arg is a Named Field */
- Info.FieldType = INTERNAL_TYPE_BANK_FIELD;
+ Info.FieldType = ACPI_TYPE_LOCAL_BANK_FIELD;
Info.RegionNode = RegionNode;
Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
@@ -672,7 +672,7 @@ AcpiDsCreateIndexField (
Arg = Arg->Common.Next;
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
- INTERNAL_TYPE_INDEX_FIELD_DEFN, ACPI_IMODE_EXECUTE,
+ ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode);
if (ACPI_FAILURE (Status))
{
@@ -687,7 +687,7 @@ AcpiDsCreateIndexField (
/* Each remaining arg is a Named Field */
- Info.FieldType = INTERNAL_TYPE_INDEX_FIELD;
+ Info.FieldType = ACPI_TYPE_LOCAL_INDEX_FIELD;
Info.RegionNode = RegionNode;
Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
diff --git a/sys/contrib/dev/acpica/dsmethod.c b/sys/contrib/dev/acpica/dsmethod.c
index 6de47cf..9676539 100644
--- a/sys/contrib/dev/acpica/dsmethod.c
+++ b/sys/contrib/dev/acpica/dsmethod.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsmethod - Parser/Interpreter interface - control method parsing
- * $Revision: 88 $
+ * $Revision: 89 $
*
*****************************************************************************/
@@ -320,7 +320,7 @@ AcpiDsBeginMethodExecution (
* interpreter if we block
*/
Status = AcpiExSystemWaitSemaphore (ObjDesc->Method.Semaphore,
- WAIT_FOREVER);
+ ACPI_WAIT_FOREVER);
}
/*
diff --git a/sys/contrib/dev/acpica/dsmthdat.c b/sys/contrib/dev/acpica/dsmthdat.c
index e466158..301cadb 100644
--- a/sys/contrib/dev/acpica/dsmthdat.c
+++ b/sys/contrib/dev/acpica/dsmthdat.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dsmthdat - control method arguments and local variables
- * $Revision: 63 $
+ * $Revision: 64 $
*
******************************************************************************/
@@ -722,7 +722,7 @@ AcpiDsStoreObjectToLocal (
* If we have a valid reference object that came from RefOf(), do the
* indirect store
*/
- if ((CurrentObjDesc->Common.Type == INTERNAL_TYPE_REFERENCE) &&
+ if ((CurrentObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) &&
(CurrentObjDesc->Reference.Opcode == AML_REF_OF_OP))
{
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
diff --git a/sys/contrib/dev/acpica/dsobject.c b/sys/contrib/dev/acpica/dsobject.c
index 569023c..a81a830 100644
--- a/sys/contrib/dev/acpica/dsobject.c
+++ b/sys/contrib/dev/acpica/dsobject.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsobject - Dispatcher object management routines
- * $Revision: 108 $
+ * $Revision: 110 $
*
*****************************************************************************/
@@ -837,7 +837,7 @@ AcpiDsInitObjectFromOp (
case ACPI_TYPE_STRING:
ObjDesc->String.Pointer = Op->Common.Value.String;
- ObjDesc->String.Length = ACPI_STRLEN (Op->Common.Value.String);
+ ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Op->Common.Value.String);
/*
* The string is contained in the ACPI table, don't ever try
@@ -851,7 +851,7 @@ AcpiDsInitObjectFromOp (
break;
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
switch (OpInfo->Type)
{
diff --git a/sys/contrib/dev/acpica/dsopcode.c b/sys/contrib/dev/acpica/dsopcode.c
index 8be92c8..4262bb4 100644
--- a/sys/contrib/dev/acpica/dsopcode.c
+++ b/sys/contrib/dev/acpica/dsopcode.c
@@ -2,7 +2,7 @@
*
* Module Name: dsopcode - Dispatcher Op Region support and handling of
* "control" opcodes
- * $Revision: 82 $
+ * $Revision: 83 $
*
*****************************************************************************/
@@ -1158,7 +1158,7 @@ AcpiDsExecEndControlOp (
* Allow references created by the Index operator to return unchanged.
*/
if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_OPERAND) &&
- (ACPI_GET_OBJECT_TYPE (WalkState->Results->Results.ObjDesc [0]) == INTERNAL_TYPE_REFERENCE) &&
+ (ACPI_GET_OBJECT_TYPE (WalkState->Results->Results.ObjDesc [0]) == ACPI_TYPE_LOCAL_REFERENCE) &&
((WalkState->Results->Results.ObjDesc [0])->Reference.Opcode != AML_INDEX_OP))
{
Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState);
diff --git a/sys/contrib/dev/acpica/dsutils.c b/sys/contrib/dev/acpica/dsutils.c
index 17cd17a..4c553d3 100644
--- a/sys/contrib/dev/acpica/dsutils.c
+++ b/sys/contrib/dev/acpica/dsutils.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dsutils - Dispatcher utilities
- * $Revision: 95 $
+ * $Revision: 97 $
*
******************************************************************************/
@@ -379,6 +379,46 @@ AcpiDsResolveOperands (
return_ACPI_STATUS (Status);
}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiDsClearOperands
+ *
+ * PARAMETERS: WalkState - Current walk state with operands on stack
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Clear all operands on the current walk state operand stack.
+ *
+ ******************************************************************************/
+
+void
+AcpiDsClearOperands (
+ ACPI_WALK_STATE *WalkState)
+{
+ UINT32 i;
+
+
+ ACPI_FUNCTION_TRACE_PTR ("AcpiDsClearOperands", WalkState);
+
+
+ /*
+ * Remove a reference on each operand on the stack
+ */
+ for (i = 0; i < WalkState->NumOperands; i++)
+ {
+ /*
+ * Remove a reference to all operands, including both
+ * "Arguments" and "Targets".
+ */
+ AcpiUtRemoveReference (WalkState->Operands[i]);
+ WalkState->Operands[i] = NULL;
+ }
+
+ WalkState->NumOperands = 0;
+ return_VOID;
+}
#endif
@@ -549,7 +589,7 @@ AcpiDsCreateOperand (
/* Get the object type of the argument */
OpInfo = AcpiPsGetOpcodeInfo (Opcode);
- if (OpInfo->ObjectType == INTERNAL_TYPE_INVALID)
+ if (OpInfo->ObjectType == ACPI_TYPE_INVALID)
{
return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
}
diff --git a/sys/contrib/dev/acpica/dswexec.c b/sys/contrib/dev/acpica/dswexec.c
index 316442b..f90dd08 100644
--- a/sys/contrib/dev/acpica/dswexec.c
+++ b/sys/contrib/dev/acpica/dswexec.c
@@ -2,7 +2,7 @@
*
* Module Name: dswexec - Dispatcher method execution callbacks;
* dispatch to interpreter.
- * $Revision: 95 $
+ * $Revision: 96 $
*
*****************************************************************************/
@@ -443,7 +443,6 @@ AcpiDsExecEndOp (
UINT32 OpClass;
ACPI_PARSE_OBJECT *NextOp;
ACPI_PARSE_OBJECT *FirstArg;
- UINT32 i;
ACPI_FUNCTION_TRACE_PTR ("DsExecEndOp", WalkState);
@@ -526,16 +525,7 @@ AcpiDsExecEndOp (
/* Always delete the argument objects and clear the operand stack */
- for (i = 0; i < WalkState->NumOperands; i++)
- {
- /*
- * Remove a reference to all operands, including both
- * "Arguments" and "Targets".
- */
- AcpiUtRemoveReference (WalkState->Operands[i]);
- WalkState->Operands[i] = NULL;
- }
- WalkState->NumOperands = 0;
+ AcpiDsClearOperands (WalkState);
/*
* If a result object was returned from above, push it on the
@@ -601,6 +591,9 @@ AcpiDsExecEndOp (
Status = AcpiDsResolveOperands (WalkState);
if (ACPI_FAILURE (Status))
{
+ /* On error, clear all resolved operands */
+
+ AcpiDsClearOperands (WalkState);
break;
}
diff --git a/sys/contrib/dev/acpica/dswload.c b/sys/contrib/dev/acpica/dswload.c
index 852d40a..1afd9cf 100644
--- a/sys/contrib/dev/acpica/dswload.c
+++ b/sys/contrib/dev/acpica/dswload.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dswload - Dispatcher namespace load callbacks
- * $Revision: 75 $
+ * $Revision: 78 $
*
*****************************************************************************/
@@ -248,54 +248,30 @@ AcpiDsLoad1BeginOp (
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
"State=%p Op=%p [%s] ", WalkState, Op, AcpiUtGetTypeName (ObjectType)));
- /*
- * Setup the search flags.
- *
- * Since we are entering a name into the namespace, we do not want to
- * enable the search-to-root upsearch.
- *
- * There are only two conditions where it is acceptable that the name
- * already exists:
- * 1) the Scope() operator can reopen a scoping object that was
- * previously defined (Scope, Method, Device, etc.)
- * 2) Whenever we are parsing a deferred opcode (OpRegion, Buffer,
- * BufferField, or Package), the name of the object is already
- * in the namespace.
- */
- Flags = ACPI_NS_NO_UPSEARCH;
- if ((WalkState->Opcode != AML_SCOPE_OP) &&
- (!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP)))
+ switch (WalkState->Opcode)
{
- Flags |= ACPI_NS_ERROR_IF_FOUND;
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Cannot already exist\n"));
- }
- else
- {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Both Find or Create allowed\n"));
- }
+ case AML_SCOPE_OP:
- /*
- * Enter the named type into the internal namespace. We enter the name
- * as we go downward in the parse tree. Any necessary subobjects that involve
- * arguments to the opcode must be created as we go back up the parse tree later.
- */
- Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType,
- ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &(Node));
- if (ACPI_FAILURE (Status))
- {
- ACPI_REPORT_NSERROR (Path, Status);
- return (Status);
- }
+ /*
+ * The target name of the Scope() operator must exist at this point so
+ * that we can actually open the scope to enter new names underneath it.
+ * Allow search-to-root for single namesegs.
+ */
+ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType,
+ ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node));
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_REPORT_NSERROR (Path, Status);
+ return (Status);
+ }
- /*
- * For the scope op, we must check to make sure that the target is
- * one of the opcodes that actually opens a scope
- */
- if (WalkState->Opcode == AML_SCOPE_OP)
- {
+ /*
+ * Check to make sure that the target is
+ * one of the opcodes that actually opens a scope
+ */
switch (Node->Type)
{
- case ACPI_TYPE_ANY: /* Scope nodes are untyped (ANY) */
+ case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
case ACPI_TYPE_DEVICE:
case ACPI_TYPE_POWER:
case ACPI_TYPE_PROCESSOR:
@@ -325,7 +301,7 @@ AcpiDsLoad1BeginOp (
WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
break;
- default:
+ default:
/* All other types are an error */
@@ -334,8 +310,56 @@ AcpiDsLoad1BeginOp (
return (AE_AML_OPERAND_TYPE);
}
+ break;
+
+
+ default:
+
+ /*
+ * For all other named opcodes, we will enter the name into the namespace.
+ *
+ * Setup the search flags.
+ * Since we are entering a name into the namespace, we do not want to
+ * enable the search-to-root upsearch.
+ *
+ * There are only two conditions where it is acceptable that the name
+ * already exists:
+ * 1) the Scope() operator can reopen a scoping object that was
+ * previously defined (Scope, Method, Device, etc.)
+ * 2) Whenever we are parsing a deferred opcode (OpRegion, Buffer,
+ * BufferField, or Package), the name of the object is already
+ * in the namespace.
+ */
+ Flags = ACPI_NS_NO_UPSEARCH;
+ if ((WalkState->Opcode != AML_SCOPE_OP) &&
+ (!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP)))
+ {
+ Flags |= ACPI_NS_ERROR_IF_FOUND;
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Cannot already exist\n"));
+ }
+ else
+ {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Both Find or Create allowed\n"));
+ }
+
+ /*
+ * Enter the named type into the internal namespace. We enter the name
+ * as we go downward in the parse tree. Any necessary subobjects that involve
+ * arguments to the opcode must be created as we go back up the parse tree later.
+ */
+ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType,
+ ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &(Node));
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_REPORT_NSERROR (Path, Status);
+ return (Status);
+ }
+ break;
}
+
+ /* Common exit */
+
if (!Op)
{
/* Create a new op */
@@ -537,68 +561,46 @@ AcpiDsLoad2BeginOp (
"State=%p Op=%p Type=%X\n", WalkState, Op, ObjectType));
- if (WalkState->Opcode == AML_FIELD_OP ||
- WalkState->Opcode == AML_BANK_FIELD_OP ||
- WalkState->Opcode == AML_INDEX_FIELD_OP)
+ switch (WalkState->Opcode)
{
+ case AML_FIELD_OP:
+ case AML_BANK_FIELD_OP:
+ case AML_INDEX_FIELD_OP:
+
Node = NULL;
Status = AE_OK;
- }
- else if (WalkState->Opcode == AML_INT_NAMEPATH_OP)
- {
+ break;
+
+ case AML_INT_NAMEPATH_OP:
+
/*
* The NamePath is an object reference to an existing object. Don't enter the
* name into the namespace, but look it up for use later
*/
Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node));
- }
- else
- {
- /* All other opcodes */
-
- if (Op && Op->Common.Node)
- {
- /* This op/node was previously entered into the namespace */
-
- Node = Op->Common.Node;
-
- if (AcpiNsOpensScope (ObjectType))
- {
- Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState);
- if (ACPI_FAILURE (Status))
- {
- return_ACPI_STATUS (Status);
- }
+ break;
- }
- return_ACPI_STATUS (AE_OK);
- }
+ case AML_SCOPE_OP:
/*
- * Enter the named type into the internal namespace. We enter the name
- * as we go downward in the parse tree. Any necessary subobjects that involve
- * arguments to the opcode must be created as we go back up the parse tree later.
+ * The Path is an object reference to an existing object. Don't enter the
+ * name into the namespace, but look it up for use later
*/
Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
- ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, WalkState, &(Node));
- }
-
- if (ACPI_FAILURE (Status))
- {
- ACPI_REPORT_NSERROR (BufferPtr, Status);
- return_ACPI_STATUS (Status);
- }
-
- /*
- * For the scope op, we must check to make sure that the target is
- * one of the opcodes that actually opens a scope
- */
- if (WalkState->Opcode == AML_SCOPE_OP)
- {
+ ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node));
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_REPORT_NSERROR (BufferPtr, Status);
+ return_ACPI_STATUS (Status);
+ }
+ /*
+ * We must check to make sure that the target is
+ * one of the opcodes that actually opens a scope
+ */
switch (Node->Type)
{
- case ACPI_TYPE_ANY: /* Scope nodes are untyped (ANY) */
+ case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
case ACPI_TYPE_DEVICE:
case ACPI_TYPE_POWER:
case ACPI_TYPE_PROCESSOR:
@@ -626,7 +628,7 @@ AcpiDsLoad2BeginOp (
WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
break;
- default:
+ default:
/* All other types are an error */
@@ -635,8 +637,47 @@ AcpiDsLoad2BeginOp (
return (AE_AML_OPERAND_TYPE);
}
+ break;
+
+ default:
+
+ /* All other opcodes */
+
+ if (Op && Op->Common.Node)
+ {
+ /* This op/node was previously entered into the namespace */
+
+ Node = Op->Common.Node;
+
+ if (AcpiNsOpensScope (ObjectType))
+ {
+ Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+
+ }
+ return_ACPI_STATUS (AE_OK);
+ }
+
+ /*
+ * Enter the named type into the internal namespace. We enter the name
+ * as we go downward in the parse tree. Any necessary subobjects that involve
+ * arguments to the opcode must be created as we go back up the parse tree later.
+ */
+ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
+ ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, WalkState, &(Node));
+ break;
+ }
+
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_REPORT_NSERROR (BufferPtr, Status);
+ return_ACPI_STATUS (Status);
}
+
if (!Op)
{
/* Create a new op */
diff --git a/sys/contrib/dev/acpica/dswscope.c b/sys/contrib/dev/acpica/dswscope.c
index 92736f5..60e06c5 100644
--- a/sys/contrib/dev/acpica/dswscope.c
+++ b/sys/contrib/dev/acpica/dswscope.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dswscope - Scope stack manipulation
- * $Revision: 53 $
+ * $Revision: 56 $
*
*****************************************************************************/
@@ -117,7 +117,6 @@
#define __DSWSCOPE_C__
#include "acpi.h"
-#include "acinterp.h"
#include "acdispat.h"
@@ -181,6 +180,7 @@ AcpiDsScopeStackPush (
ACPI_WALK_STATE *WalkState)
{
ACPI_GENERIC_STATE *ScopeInfo;
+ ACPI_GENERIC_STATE *OldScopeInfo;
ACPI_FUNCTION_TRACE ("DsScopeStackPush");
@@ -196,7 +196,7 @@ AcpiDsScopeStackPush (
/* Make sure object type is valid */
- if (!AcpiExValidateObjectType (Type))
+ if (!AcpiUtValidObjectType (Type))
{
ACPI_REPORT_WARNING (("DsScopeStackPush: type code out of range\n"));
}
@@ -216,6 +216,30 @@ AcpiDsScopeStackPush (
ScopeInfo->Scope.Node = Node;
ScopeInfo->Common.Value = (UINT16) Type;
+ WalkState->ScopeDepth++;
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
+ "[%.2d] Pushed scope ", (UINT32) WalkState->ScopeDepth));
+
+ OldScopeInfo = WalkState->ScopeInfo;
+ if (OldScopeInfo)
+ {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
+ "[%4.4s] (%10s)",
+ OldScopeInfo->Scope.Node->Name.Ascii,
+ AcpiUtGetTypeName (OldScopeInfo->Common.Value)));
+ }
+ else
+ {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
+ "[\\___] (%10s)", "ROOT"));
+ }
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
+ ", New scope -> [%4.4s] (%s)\n",
+ ScopeInfo->Scope.Node->Name.Ascii,
+ AcpiUtGetTypeName (ScopeInfo->Common.Value)));
+
/* Push new scope object onto stack */
AcpiUtPushGenericState (&WalkState->ScopeInfo, ScopeInfo);
@@ -246,6 +270,7 @@ AcpiDsScopeStackPop (
ACPI_WALK_STATE *WalkState)
{
ACPI_GENERIC_STATE *ScopeInfo;
+ ACPI_GENERIC_STATE *NewScopeInfo;
ACPI_FUNCTION_TRACE ("DsScopeStackPop");
@@ -260,8 +285,27 @@ AcpiDsScopeStackPop (
return_ACPI_STATUS (AE_STACK_UNDERFLOW);
}
+ WalkState->ScopeDepth--;
+
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
- "Popped object type (%s)\n", AcpiUtGetTypeName (ScopeInfo->Common.Value)));
+ "[%.2d] Popped scope [%4.4s] (%10s), New scope -> ",
+ (UINT32) WalkState->ScopeDepth,
+ ScopeInfo->Scope.Node->Name.Ascii,
+ AcpiUtGetTypeName (ScopeInfo->Common.Value)));
+
+ NewScopeInfo = WalkState->ScopeInfo;
+ if (NewScopeInfo)
+ {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
+ "[%4.4s] (%s)\n",
+ NewScopeInfo->Scope.Node->Name.Ascii,
+ AcpiUtGetTypeName (NewScopeInfo->Common.Value)));
+ }
+ else
+ {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
+ "[\\___] (ROOT)\n"));
+ }
AcpiUtDeleteGenericState (ScopeInfo);
diff --git a/sys/contrib/dev/acpica/dswstate.c b/sys/contrib/dev/acpica/dswstate.c
index 8da290a..e979a1e 100644
--- a/sys/contrib/dev/acpica/dswstate.c
+++ b/sys/contrib/dev/acpica/dswstate.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dswstate - Dispatcher parse tree walk management routines
- * $Revision: 68 $
+ * $Revision: 70 $
*
*****************************************************************************/
@@ -273,7 +273,7 @@ AcpiDsResultPop (
ACPI_OPERAND_OBJECT **Object,
ACPI_WALK_STATE *WalkState)
{
- UINT32 Index;
+ NATIVE_UINT Index;
ACPI_GENERIC_STATE *State;
@@ -308,7 +308,7 @@ AcpiDsResultPop (
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Index=%X State=%p Num=%X\n",
*Object, (*Object) ? AcpiUtGetObjectTypeName (*Object) : "NULL",
- Index -1, WalkState, State->Results.NumResults));
+ (UINT32) Index -1, WalkState, State->Results.NumResults));
return (AE_OK);
}
@@ -455,7 +455,7 @@ AcpiDsResultPush (
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Push an object onto the WalkState result stack.
*
******************************************************************************/
@@ -492,7 +492,7 @@ AcpiDsResultStackPush (
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Pop an object off of the WalkState result stack.
*
******************************************************************************/
diff --git a/sys/contrib/dev/acpica/evevent.c b/sys/contrib/dev/acpica/evevent.c
index 32af556..fe4bc56 100644
--- a/sys/contrib/dev/acpica/evevent.c
+++ b/sys/contrib/dev/acpica/evevent.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evevent - Fixed and General Purpose Even handling and dispatch
- * $Revision: 92 $
+ * $Revision: 96 $
*
*****************************************************************************/
@@ -446,44 +446,63 @@ AcpiEvGpeInitialize (void)
AcpiGbl_GpeBlockInfo[0].BlockBaseNumber = 0;
AcpiGbl_GpeBlockInfo[1].BlockBaseNumber = AcpiGbl_FADT->Gpe1Base;
+ /* Warn and exit if there are no GPE registers */
+
AcpiGbl_GpeRegisterCount = AcpiGbl_GpeBlockInfo[0].RegisterCount +
AcpiGbl_GpeBlockInfo[1].RegisterCount;
if (!AcpiGbl_GpeRegisterCount)
{
- ACPI_REPORT_WARNING (("Zero GPEs are defined in the FADT\n"));
+ ACPI_REPORT_WARNING (("There are no GPE blocks defined in the FADT\n"));
return_ACPI_STATUS (AE_OK);
}
- /* Determine the maximum GPE number for this machine */
+ /*
+ * Determine the maximum GPE number for this machine.
+ * Note: both GPE0 and GPE1 are optional, and either can exist without
+ * the other
+ */
+ if (AcpiGbl_GpeBlockInfo[0].RegisterCount)
+ {
+ /* GPE block 0 exists */
- AcpiGbl_GpeNumberMax = ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[0].RegisterCount) - 1;
+ AcpiGbl_GpeNumberMax = ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[0].RegisterCount) - 1;
+ }
if (AcpiGbl_GpeBlockInfo[1].RegisterCount)
{
- /* Check for GPE0/GPE1 overlap */
+ /* GPE block 1 exists */
+
+ /* Check for GPE0/GPE1 overlap (if both banks exist) */
- if (AcpiGbl_GpeNumberMax >= AcpiGbl_FADT->Gpe1Base)
+ if ((AcpiGbl_GpeBlockInfo[0].RegisterCount) &&
+ (AcpiGbl_GpeNumberMax >= AcpiGbl_FADT->Gpe1Base))
{
- ACPI_REPORT_ERROR (("GPE0 block overlaps the GPE1 block\n"));
+ ACPI_REPORT_ERROR ((
+ "GPE0 block (GPE 0 to %d) overlaps the GPE1 block (GPE %d to %d)\n",
+ AcpiGbl_GpeNumberMax, AcpiGbl_FADT->Gpe1Base,
+ AcpiGbl_FADT->Gpe1Base + (ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[1].RegisterCount) - 1)));
return_ACPI_STATUS (AE_BAD_VALUE);
}
- /* GPE0 and GPE1 do not have to be contiguous in the GPE number space */
-
- AcpiGbl_GpeNumberMax = AcpiGbl_FADT->Gpe1Base + (ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[1].RegisterCount) - 1);
+ /*
+ * GPE0 and GPE1 do not have to be contiguous in the GPE number space,
+ * But, GPE0 always starts at zero.
+ */
+ AcpiGbl_GpeNumberMax = AcpiGbl_FADT->Gpe1Base +
+ (ACPI_MUL_8 (AcpiGbl_GpeBlockInfo[1].RegisterCount) - 1);
}
/* Check for Max GPE number out-of-range */
if (AcpiGbl_GpeNumberMax > ACPI_GPE_MAX)
{
- ACPI_REPORT_ERROR (("Maximum GPE number from FADT is too large: 0x%X\n", AcpiGbl_GpeNumberMax));
+ ACPI_REPORT_ERROR (("Maximum GPE number from FADT is too large: 0x%X\n",
+ AcpiGbl_GpeNumberMax));
return_ACPI_STATUS (AE_BAD_VALUE);
}
- /*
- * Allocate the GPE number-to-index translation table
- */
+ /* Allocate the GPE number-to-index translation table */
+
AcpiGbl_GpeNumberToIndex = ACPI_MEM_CALLOCATE (
sizeof (ACPI_GPE_INDEX_INFO) *
((ACPI_SIZE) AcpiGbl_GpeNumberMax + 1));
@@ -499,9 +518,8 @@ AcpiEvGpeInitialize (void)
ACPI_MEMSET (AcpiGbl_GpeNumberToIndex, (int) ACPI_GPE_INVALID,
sizeof (ACPI_GPE_INDEX_INFO) * ((ACPI_SIZE) AcpiGbl_GpeNumberMax + 1));
- /*
- * Allocate the GPE register information block
- */
+ /* Allocate the GPE register information block */
+
AcpiGbl_GpeRegisterInfo = ACPI_MEM_CALLOCATE (
(ACPI_SIZE) AcpiGbl_GpeRegisterCount *
sizeof (ACPI_GPE_REGISTER_INFO));
@@ -578,7 +596,6 @@ AcpiEvGpeInitialize (void)
* are cleared by writing a '1', while enable registers are cleared
* by writing a '0'.
*/
-
Status = AcpiHwLowLevelWrite (8, 0x00, &GpeRegisterInfo->EnableAddress, 0);
if (ACPI_FAILURE (Status))
{
@@ -594,16 +611,19 @@ AcpiEvGpeInitialize (void)
GpeRegister++;
}
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d: %X registers at %8.8X%8.8X\n",
- (INT32) GpeBlock, AcpiGbl_GpeBlockInfo[0].RegisterCount,
- ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)),
- ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address))));
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d Range GPE #%2.2X to GPE #%2.2X\n",
- (INT32) GpeBlock,
- AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber,
- AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber +
- ((AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount * 8) -1)));
+ if (i)
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d: %X registers at %8.8X%8.8X\n",
+ (INT32) GpeBlock, AcpiGbl_GpeBlockInfo[0].RegisterCount,
+ ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)),
+ ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address))));
+
+ ACPI_REPORT_INFO (("GPE Block%d defined as GPE%d to GPE%d\n",
+ (INT32) GpeBlock,
+ (UINT32) AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber,
+ (UINT32) (AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber +
+ ((AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount * 8) -1))));
+ }
}
return_ACPI_STATUS (AE_OK);
@@ -925,7 +945,7 @@ AcpiEvAsynchExecuteGpeMethod (
Status = AcpiNsEvaluateByHandle (GpeInfo.MethodHandle, NULL, NULL);
if (ACPI_FAILURE (Status))
{
- ACPI_REPORT_ERROR (("%s while evaluated GPE%X method\n",
+ ACPI_REPORT_ERROR (("%s while evaluating GPE%X method\n",
AcpiFormatException (Status), GpeNumber));
}
}
@@ -980,7 +1000,7 @@ AcpiEvGpeDispatch (
GpeNumberIndex = AcpiEvGetGpeNumberIndex (GpeNumber);
if (GpeNumberIndex == ACPI_GPE_INVALID)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid event, GPE[%X].\n", GpeNumber));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "GPE[%X] is not a valid event\n", GpeNumber));
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
}
diff --git a/sys/contrib/dev/acpica/evmisc.c b/sys/contrib/dev/acpica/evmisc.c
index 5062112..7213611 100644
--- a/sys/contrib/dev/acpica/evmisc.c
+++ b/sys/contrib/dev/acpica/evmisc.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evmisc - Miscellaneous event manager support functions
- * $Revision: 57 $
+ * $Revision: 59 $
*
*****************************************************************************/
@@ -331,7 +331,8 @@ AcpiEvQueueNotifyRequest (
{
/* There is no per-device notify handler for this device */
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "No notify handler for node %p \n", Node));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
+ "No notify handler for [%4.4s] node %p\n", Node->Name.Ascii, Node));
}
return (Status);
@@ -547,7 +548,7 @@ AcpiEvInitGlobalLockHandler (void)
ACPI_STATUS
AcpiEvAcquireGlobalLock (
- UINT32 Timeout)
+ UINT16 Timeout)
{
ACPI_STATUS Status = AE_OK;
BOOLEAN Acquired = FALSE;
@@ -583,7 +584,7 @@ AcpiEvAcquireGlobalLock (
{
/* We got the lock */
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Acquired the HW Global Lock\n"));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Acquired the HW Global Lock\n"));
AcpiGbl_GlobalLockAcquired = TRUE;
return_ACPI_STATUS (AE_OK);
@@ -593,7 +594,7 @@ AcpiEvAcquireGlobalLock (
* Did not get the lock. The pending bit was set above, and we must now
* wait until we get the global lock released interrupt.
*/
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Waiting for the HW Global Lock\n"));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Waiting for the HW Global Lock\n"));
/*
* Acquire the global lock semaphore first.
diff --git a/sys/contrib/dev/acpica/evxface.c b/sys/contrib/dev/acpica/evxface.c
index cf8502c..b50e19e 100644
--- a/sys/contrib/dev/acpica/evxface.c
+++ b/sys/contrib/dev/acpica/evxface.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evxface - External interfaces for ACPI events
- * $Revision: 130 $
+ * $Revision: 132 $
*
*****************************************************************************/
@@ -410,7 +410,7 @@ AcpiInstallNotifyHandler (
/* Install the handler */
- NotifyObj = AcpiUtCreateInternalObject (INTERNAL_TYPE_NOTIFY);
+ NotifyObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_NOTIFY);
if (!NotifyObj)
{
Status = AE_NO_MEMORY;
@@ -756,7 +756,7 @@ Cleanup:
ACPI_STATUS
AcpiAcquireGlobalLock (
- UINT32 Timeout,
+ UINT16 Timeout,
UINT32 *Handle)
{
ACPI_STATUS Status;
diff --git a/sys/contrib/dev/acpica/evxfregn.c b/sys/contrib/dev/acpica/evxfregn.c
index 41721d6..6f06b3a 100644
--- a/sys/contrib/dev/acpica/evxfregn.c
+++ b/sys/contrib/dev/acpica/evxfregn.c
@@ -2,7 +2,7 @@
*
* Module Name: evxfregn - External Interfaces, ACPI Operation Regions and
* Address Spaces.
- * $Revision: 50 $
+ * $Revision: 52 $
*
*****************************************************************************/
@@ -317,8 +317,8 @@ AcpiInstallAddressSpaceHandler (
}
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
- "Installing address handler for region %s(%X) on Device %p(%p)\n",
- AcpiUtGetRegionName (SpaceId), SpaceId, Node, ObjDesc));
+ "Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n",
+ AcpiUtGetRegionName (SpaceId), SpaceId, Node->Name.Ascii, Node, ObjDesc));
/*
* Now we can install the handler
@@ -327,7 +327,7 @@ AcpiInstallAddressSpaceHandler (
* So, we just allocate the object for the handler and link it
* into the list.
*/
- HandlerObj = AcpiUtCreateInternalObject (INTERNAL_TYPE_ADDRESS_HANDLER);
+ HandlerObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_ADDRESS_HANDLER);
if (!HandlerObj)
{
Status = AE_NO_MEMORY;
diff --git a/sys/contrib/dev/acpica/exconfig.c b/sys/contrib/dev/acpica/exconfig.c
index e473771..409f2d3 100644
--- a/sys/contrib/dev/acpica/exconfig.c
+++ b/sys/contrib/dev/acpica/exconfig.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
- * $Revision: 67 $
+ * $Revision: 69 $
*
*****************************************************************************/
@@ -160,7 +160,7 @@ AcpiExAddTable (
/* Create an object to be the table handle */
- ObjDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE);
+ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE);
if (!ObjDesc)
{
return_ACPI_STATUS (AE_NO_MEMORY);
@@ -171,7 +171,6 @@ AcpiExAddTable (
TableInfo.Pointer = Table;
TableInfo.Length = (ACPI_SIZE) Table->Length;
TableInfo.Allocation = ACPI_MEM_ALLOCATED;
- TableInfo.BasePointer = Table;
Status = AcpiTbInstallTable (&TableInfo);
if (ACPI_FAILURE (Status))
@@ -430,9 +429,9 @@ AcpiExLoadOp (
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Field %p %s\n",
ObjDesc, AcpiUtGetObjectTypeName (ObjDesc)));
@@ -537,7 +536,7 @@ AcpiExUnloadTable (
*/
if ((!DdbHandle) ||
(ACPI_GET_DESCRIPTOR_TYPE (DdbHandle) != ACPI_DESC_TYPE_OPERAND) ||
- (ACPI_GET_OBJECT_TYPE (DdbHandle) != INTERNAL_TYPE_REFERENCE))
+ (ACPI_GET_OBJECT_TYPE (DdbHandle) != ACPI_TYPE_LOCAL_REFERENCE))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/exconvrt.c b/sys/contrib/dev/acpica/exconvrt.c
index 6729a27..f5937f1 100644
--- a/sys/contrib/dev/acpica/exconvrt.c
+++ b/sys/contrib/dev/acpica/exconvrt.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exconvrt - Object conversion routines
- * $Revision: 39 $
+ * $Revision: 44 $
*
*****************************************************************************/
@@ -246,10 +246,15 @@ AcpiExConvertToInteger (
return_ACPI_STATUS (AE_NO_MEMORY);
}
- /* Save the Result, delete original descriptor, store new descriptor */
+ /* Save the Result */
RetDesc->Integer.Value = Result;
+ /*
+ * If we are about to overwrite the original object on the operand stack,
+ * we must remove a reference on the original object because we are
+ * essentially removing it from the stack.
+ */
if (*ResultDesc == ObjDesc)
{
if (WalkState->Opcode != AML_STORE_OP)
@@ -293,81 +298,53 @@ AcpiExConvertToBuffer (
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
+ case ACPI_TYPE_BUFFER:
+
+ /* No conversion necessary */
+
+ *ResultDesc = ObjDesc;
+ return_ACPI_STATUS (AE_OK);
+
+
case ACPI_TYPE_INTEGER:
/*
- * Create a new Buffer object
+ * Create a new Buffer object.
+ * Need enough space for one integer
*/
- RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
+ RetDesc = AcpiUtCreateBufferObject (AcpiGbl_IntegerByteWidth);
if (!RetDesc)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
- /* Need enough space for one integer */
-
- NewBuf = ACPI_MEM_CALLOCATE (AcpiGbl_IntegerByteWidth);
- if (!NewBuf)
- {
- ACPI_REPORT_ERROR
- (("ExConvertToBuffer: Buffer allocation failure\n"));
- AcpiUtRemoveReference (RetDesc);
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
/* Copy the integer to the buffer */
+ NewBuf = RetDesc->Buffer.Pointer;
for (i = 0; i < AcpiGbl_IntegerByteWidth; i++)
{
NewBuf[i] = (UINT8) (ObjDesc->Integer.Value >> (i * 8));
}
-
- /* Complete buffer object initialization */
-
- RetDesc->Buffer.Flags |= AOPOBJ_DATA_VALID;
- RetDesc->Buffer.Pointer = NewBuf;
- RetDesc->Buffer.Length = AcpiGbl_IntegerByteWidth;
-
- /* Return the new buffer descriptor */
-
- *ResultDesc = RetDesc;
break;
case ACPI_TYPE_STRING:
+
/*
* Create a new Buffer object
+ * Size will be the string length
*/
- RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
+ RetDesc = AcpiUtCreateBufferObject (ObjDesc->String.Length);
if (!RetDesc)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
- /* Need enough space for one integer */
-
- NewBuf = ACPI_MEM_CALLOCATE (ObjDesc->String.Length);
- if (!NewBuf)
- {
- ACPI_REPORT_ERROR
- (("ExConvertToBuffer: Buffer allocation failure\n"));
- AcpiUtRemoveReference (RetDesc);
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer, ObjDesc->String.Length);
- RetDesc->Buffer.Flags |= AOPOBJ_DATA_VALID;
- RetDesc->Buffer.Pointer = NewBuf;
- RetDesc->Buffer.Length = ObjDesc->String.Length;
+ /* Copy the string to the buffer */
- /* Return the new buffer descriptor */
-
- *ResultDesc = RetDesc;
- break;
-
-
- case ACPI_TYPE_BUFFER:
- *ResultDesc = ObjDesc;
+ NewBuf = RetDesc->Buffer.Pointer;
+ ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer,
+ ObjDesc->String.Length);
break;
@@ -377,7 +354,22 @@ AcpiExConvertToBuffer (
/* Mark buffer initialized */
- (*ResultDesc)->Common.Flags |= AOPOBJ_DATA_VALID;
+ RetDesc->Common.Flags |= AOPOBJ_DATA_VALID;
+
+ /*
+ * If we are about to overwrite the original object on the operand stack,
+ * we must remove a reference on the original object because we are
+ * essentially removing it from the stack.
+ */
+ if (*ResultDesc == ObjDesc)
+ {
+ if (WalkState->Opcode != AML_STORE_OP)
+ {
+ AcpiUtRemoveReference (ObjDesc);
+ }
+ }
+
+ *ResultDesc = RetDesc;
return_ACPI_STATUS (AE_OK);
}
@@ -522,6 +514,21 @@ AcpiExConvertToString (
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
+ case ACPI_TYPE_STRING:
+
+ if (MaxLength >= ObjDesc->String.Length)
+ {
+ *ResultDesc = ObjDesc;
+ return_ACPI_STATUS (AE_OK);
+ }
+ else
+ {
+ /* Must copy the string first and then truncate it */
+
+ return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
+ }
+
+
case ACPI_TYPE_INTEGER:
StringLength = AcpiGbl_IntegerByteWidth * 2;
@@ -568,18 +575,6 @@ AcpiExConvertToString (
}
RetDesc->Buffer.Pointer = NewBuf;
-
- /* Return the new buffer descriptor */
-
- if (*ResultDesc == ObjDesc)
- {
- if (WalkState->Opcode != AML_STORE_OP)
- {
- AcpiUtRemoveReference (ObjDesc);
- }
- }
-
- *ResultDesc = RetDesc;
break;
@@ -641,42 +636,29 @@ AcpiExConvertToString (
NewBuf [Index-1] = 0;
RetDesc->Buffer.Pointer = NewBuf;
- RetDesc->String.Length = ACPI_STRLEN ((char *) NewBuf);
-
- /* Return the new buffer descriptor */
-
- if (*ResultDesc == ObjDesc)
- {
- if (WalkState->Opcode != AML_STORE_OP)
- {
- AcpiUtRemoveReference (ObjDesc);
- }
- }
-
- *ResultDesc = RetDesc;
+ RetDesc->String.Length = (UINT32) ACPI_STRLEN ((char *) NewBuf);
break;
- case ACPI_TYPE_STRING:
+ default:
+ return_ACPI_STATUS (AE_TYPE);
+ }
- if (MaxLength >= ObjDesc->String.Length)
- {
- *ResultDesc = ObjDesc;
- }
- else
+ /*
+ * If we are about to overwrite the original object on the operand stack,
+ * we must remove a reference on the original object because we are
+ * essentially removing it from the stack.
+ */
+ if (*ResultDesc == ObjDesc)
+ {
+ if (WalkState->Opcode != AML_STORE_OP)
{
- /* Must copy the string first and then truncate it */
-
- return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
+ AcpiUtRemoveReference (ObjDesc);
}
- break;
-
-
- default:
- return_ACPI_STATUS (AE_TYPE);
}
+ *ResultDesc = RetDesc;
return_ACPI_STATUS (AE_OK);
}
@@ -724,7 +706,7 @@ AcpiExConvertToTargetType (
switch (DestinationType)
{
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
/*
* Named field can always handle conversions
*/
@@ -751,8 +733,8 @@ AcpiExConvertToTargetType (
{
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
/*
* These types require an Integer operand. We can convert
* a Buffer or a String to an Integer if necessary.
diff --git a/sys/contrib/dev/acpica/excreate.c b/sys/contrib/dev/acpica/excreate.c
index 332f3b5..75fec44 100644
--- a/sys/contrib/dev/acpica/excreate.c
+++ b/sys/contrib/dev/acpica/excreate.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: excreate - Named object creation
- * $Revision: 94 $
+ * $Revision: 97 $
*
*****************************************************************************/
@@ -148,7 +148,7 @@ AcpiExCreateAlias (
{
ACPI_NAMESPACE_NODE *TargetNode;
ACPI_NAMESPACE_NODE *AliasNode;
- ACPI_STATUS Status;
+ ACPI_STATUS Status = AE_OK;
ACPI_FUNCTION_TRACE ("ExCreateAlias");
@@ -159,7 +159,7 @@ AcpiExCreateAlias (
AliasNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0];
TargetNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[1];
- if (TargetNode->Type == INTERNAL_TYPE_ALIAS)
+ if (TargetNode->Type == ACPI_TYPE_LOCAL_ALIAS)
{
/*
* Dereference an existing alias so that we don't create a chain
@@ -190,8 +190,8 @@ AcpiExCreateAlias (
* NS node, not the object itself. This is because for these
* types, the object can change dynamically via a Store.
*/
- AliasNode->Type = INTERNAL_TYPE_ALIAS;
- AliasNode->Object = (ACPI_OPERAND_OBJECT *) TargetNode;
+ AliasNode->Type = ACPI_TYPE_LOCAL_ALIAS;
+ AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode);
break;
default:
@@ -212,7 +212,7 @@ AcpiExCreateAlias (
/* Since both operands are Nodes, we don't need to delete them */
- return_ACPI_STATUS (AE_OK);
+ return_ACPI_STATUS (Status);
}
@@ -320,9 +320,10 @@ AcpiExCreateMutex (
/* Init object and attach to NS node */
ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value;
+ ObjDesc->Mutex.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0];
- Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0],
- ObjDesc, ACPI_TYPE_MUTEX);
+ Status = AcpiNsAttachObject (ObjDesc->Mutex.Node,
+ ObjDesc, ACPI_TYPE_MUTEX);
Cleanup:
diff --git a/sys/contrib/dev/acpica/exdump.c b/sys/contrib/dev/acpica/exdump.c
index 1a20823..9e2be80 100644
--- a/sys/contrib/dev/acpica/exdump.c
+++ b/sys/contrib/dev/acpica/exdump.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exdump - Interpreter debug output routines
- * $Revision: 160 $
+ * $Revision: 163 $
*
*****************************************************************************/
@@ -150,7 +150,6 @@ AcpiExDumpOperand (
{
UINT8 *Buf = NULL;
UINT32 Length;
- UINT32 i;
ACPI_OPERAND_OBJECT **Element;
UINT16 ElementIndex;
@@ -194,7 +193,7 @@ AcpiExDumpOperand (
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
switch (ObjDesc->Reference.Opcode)
{
@@ -320,22 +319,6 @@ AcpiExDumpOperand (
break;
- case INTERNAL_TYPE_IF:
-
- AcpiOsPrintf ("If [Integer] %8.8X%8.8X\n",
- ACPI_HIDWORD (ObjDesc->Integer.Value),
- ACPI_LODWORD (ObjDesc->Integer.Value));
- break;
-
-
- case INTERNAL_TYPE_WHILE:
-
- AcpiOsPrintf ("While [Integer] %8.8X%8.8X\n",
- ACPI_HIDWORD (ObjDesc->Integer.Value),
- ACPI_LODWORD (ObjDesc->Integer.Value));
- break;
-
-
case ACPI_TYPE_PACKAGE:
AcpiOsPrintf ("Package count %X @ %p\n",
@@ -386,25 +369,20 @@ AcpiExDumpOperand (
case ACPI_TYPE_STRING:
- AcpiOsPrintf ("String length %X @ %p \"",
+ AcpiOsPrintf ("String length %X @ %p ",
ObjDesc->String.Length, ObjDesc->String.Pointer);
-
- for (i = 0; i < ObjDesc->String.Length; i++)
- {
- AcpiOsPrintf ("%c",
- ObjDesc->String.Pointer[i]);
- }
- AcpiOsPrintf ("\"\n");
+ AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
+ AcpiOsPrintf ("\n");
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
AcpiOsPrintf ("BankField\n");
break;
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
AcpiOsPrintf (
"RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n",
@@ -416,7 +394,7 @@ AcpiExDumpOperand (
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
AcpiOsPrintf ("IndexField\n");
break;
@@ -722,7 +700,10 @@ AcpiExDumpObjectDescriptor (
case ACPI_TYPE_STRING:
AcpiExOutInteger ("Length", ObjDesc->String.Length);
- AcpiExOutPointer ("Pointer", ObjDesc->String.Pointer);
+
+ AcpiOsPrintf ("%20s : %p ", "Pointer", ObjDesc->String.Pointer);
+ AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
+ AcpiOsPrintf ("\n");
break;
@@ -730,6 +711,7 @@ AcpiExDumpObjectDescriptor (
AcpiExOutInteger ("Length", ObjDesc->Buffer.Length);
AcpiExOutPointer ("Pointer", ObjDesc->Buffer.Pointer);
+ ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
break;
@@ -831,9 +813,9 @@ AcpiExDumpObjectDescriptor (
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
AcpiExOutInteger ("FieldFlags", ObjDesc->CommonField.FieldFlags);
AcpiExOutInteger ("AccessByteWidth", ObjDesc->CommonField.AccessByteWidth);
@@ -851,17 +833,17 @@ AcpiExDumpObjectDescriptor (
AcpiExOutPointer ("BufferObj", ObjDesc->BufferField.BufferObj);
break;
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
AcpiExOutPointer ("RegionObj", ObjDesc->Field.RegionObj);
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
AcpiExOutInteger ("Value", ObjDesc->BankField.Value);
AcpiExOutPointer ("RegionObj", ObjDesc->BankField.RegionObj);
AcpiExOutPointer ("BankObj", ObjDesc->BankField.BankObj);
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
AcpiExOutInteger ("Value", ObjDesc->IndexField.Value);
AcpiExOutPointer ("Index", ObjDesc->IndexField.IndexObj);
AcpiExOutPointer ("Data", ObjDesc->IndexField.DataObj);
@@ -874,7 +856,7 @@ AcpiExDumpObjectDescriptor (
break;
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
AcpiExOutInteger ("TargetType", ObjDesc->Reference.TargetType);
AcpiExOutString ("Opcode", (AcpiPsGetOpcodeInfo (ObjDesc->Reference.Opcode))->Name);
@@ -885,7 +867,7 @@ AcpiExDumpObjectDescriptor (
break;
- case INTERNAL_TYPE_ADDRESS_HANDLER:
+ case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
AcpiExOutInteger ("SpaceId", ObjDesc->AddrHandler.SpaceId);
AcpiExOutPointer ("Next", ObjDesc->AddrHandler.Next);
@@ -895,24 +877,16 @@ AcpiExDumpObjectDescriptor (
break;
- case INTERNAL_TYPE_NOTIFY:
+ case ACPI_TYPE_LOCAL_NOTIFY:
AcpiExOutPointer ("Node", ObjDesc->NotifyHandler.Node);
AcpiExOutPointer ("Context", ObjDesc->NotifyHandler.Context);
break;
- case INTERNAL_TYPE_ALIAS:
- case INTERNAL_TYPE_FIELD_DEFN:
- case INTERNAL_TYPE_BANK_FIELD_DEFN:
- case INTERNAL_TYPE_INDEX_FIELD_DEFN:
- case INTERNAL_TYPE_IF:
- case INTERNAL_TYPE_ELSE:
- case INTERNAL_TYPE_WHILE:
- case INTERNAL_TYPE_SCOPE:
- case INTERNAL_TYPE_DEF_ANY:
- case INTERNAL_TYPE_EXTRA:
- case INTERNAL_TYPE_DATA:
+ case ACPI_TYPE_LOCAL_ALIAS:
+ case ACPI_TYPE_LOCAL_EXTRA:
+ case ACPI_TYPE_LOCAL_DATA:
default:
AcpiOsPrintf ("ExDumpObjectDescriptor: Display not implemented for object type %s\n",
diff --git a/sys/contrib/dev/acpica/exfield.c b/sys/contrib/dev/acpica/exfield.c
index 7820a8a..63a93f3 100644
--- a/sys/contrib/dev/acpica/exfield.c
+++ b/sys/contrib/dev/acpica/exfield.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exfield - ACPI AML (p-code) execution - field manipulation
- * $Revision: 112 $
+ * $Revision: 115 $
*
*****************************************************************************/
@@ -179,6 +179,33 @@ AcpiExReadDataFromField (
}
}
}
+ else if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_REGION_FIELD) &&
+ (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS))
+ {
+ /*
+ * This is an SMBus read. We must create a buffer to hold the data
+ * and directly access the region handler.
+ */
+ BufferDesc = AcpiUtCreateBufferObject (ACPI_SMBUS_BUFFER_SIZE);
+ if (!BufferDesc)
+ {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ /* Lock entire transaction if requested */
+
+ Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags);
+
+ /*
+ * Perform the read.
+ * Note: Smbus protocol value is passed in upper 16-bits of Function
+ */
+ Status = AcpiExAccessRegion (ObjDesc, 0,
+ ACPI_CAST_PTR (ACPI_INTEGER, BufferDesc->Buffer.Pointer),
+ ACPI_READ | (ObjDesc->Field.Attribute << 16));
+ AcpiExReleaseGlobalLock (Locked);
+ goto Exit;
+ }
/*
* Allocate a buffer for the contents of the field.
@@ -195,25 +222,11 @@ AcpiExReadDataFromField (
{
/* Field is too large for an Integer, create a Buffer instead */
- BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
+ BufferDesc = AcpiUtCreateBufferObject (Length);
if (!BufferDesc)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
-
- /* Create the actual read buffer */
-
- BufferDesc->Buffer.Pointer = ACPI_MEM_CALLOCATE (Length);
- if (!BufferDesc->Buffer.Pointer)
- {
- AcpiUtRemoveReference (BufferDesc);
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- /* Complete the buffer object initialization */
-
- BufferDesc->Common.Flags = AOPOBJ_DATA_VALID;
- BufferDesc->Buffer.Length = Length;
Buffer = BufferDesc->Buffer.Pointer;
}
else
@@ -240,17 +253,17 @@ AcpiExReadDataFromField (
ObjDesc->CommonField.StartFieldBitOffset,
ObjDesc->CommonField.BaseByteOffset));
+ /* Lock entire transaction if requested */
+
Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags);
/* Read from the field */
Status = AcpiExExtractFromField (ObjDesc, Buffer, Length);
-
- /*
- * Release global lock if we acquired it earlier
- */
AcpiExReleaseGlobalLock (Locked);
+
+Exit:
if (ACPI_FAILURE (Status))
{
AcpiUtRemoveReference (BufferDesc);
@@ -280,7 +293,8 @@ AcpiExReadDataFromField (
ACPI_STATUS
AcpiExWriteDataToField (
ACPI_OPERAND_OBJECT *SourceDesc,
- ACPI_OPERAND_OBJECT *ObjDesc)
+ ACPI_OPERAND_OBJECT *ObjDesc,
+ ACPI_OPERAND_OBJECT **ResultDesc)
{
ACPI_STATUS Status;
UINT32 Length;
@@ -288,6 +302,7 @@ AcpiExWriteDataToField (
void *Buffer;
void *NewBuffer;
BOOLEAN Locked;
+ ACPI_OPERAND_OBJECT *BufferDesc;
ACPI_FUNCTION_TRACE_PTR ("ExWriteDataToField", ObjDesc);
@@ -315,6 +330,54 @@ AcpiExWriteDataToField (
}
}
}
+ else if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_REGION_FIELD) &&
+ (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS))
+ {
+ /*
+ * This is an SMBus write. We will bypass the entire field mechanism
+ * and handoff the buffer directly to the handler.
+ *
+ * Source must be a buffer of sufficient size (ACPI_SMBUS_BUFFER_SIZE).
+ */
+ if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER)
+ {
+ ACPI_REPORT_ERROR (("SMBus write requires Buffer, found type %s\n",
+ AcpiUtGetObjectTypeName (SourceDesc)));
+ return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
+ }
+
+ if (SourceDesc->Buffer.Length < ACPI_SMBUS_BUFFER_SIZE)
+ {
+ ACPI_REPORT_ERROR (("SMBus write requires Buffer of length %X, found length %X\n",
+ ACPI_SMBUS_BUFFER_SIZE, SourceDesc->Buffer.Length));
+ return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
+ }
+
+ BufferDesc = AcpiUtCreateBufferObject (ACPI_SMBUS_BUFFER_SIZE);
+ if (!BufferDesc)
+ {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ Buffer = BufferDesc->Buffer.Pointer;
+ ACPI_MEMCPY (Buffer, SourceDesc->Buffer.Pointer, ACPI_SMBUS_BUFFER_SIZE);
+
+ /* Lock entire transaction if requested */
+
+ Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags);
+
+ /*
+ * Perform the write (returns status and perhaps data in the same buffer)
+ * Note: SMBus protocol type is passed in upper 16-bits of Function.
+ */
+ Status = AcpiExAccessRegion (ObjDesc, 0,
+ (ACPI_INTEGER *) Buffer,
+ ACPI_WRITE | (ObjDesc->Field.Attribute << 16));
+ AcpiExReleaseGlobalLock (Locked);
+
+ *ResultDesc = BufferDesc;
+ return_ACPI_STATUS (Status);
+ }
/*
* Get a pointer to the data to be written
@@ -378,16 +441,13 @@ AcpiExWriteDataToField (
ObjDesc->CommonField.StartFieldBitOffset,
ObjDesc->CommonField.BaseByteOffset));
+ /* Lock entire transaction if requested */
+
Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags);
- /*
- * Write to the field
- */
- Status = AcpiExInsertIntoField (ObjDesc, Buffer, Length);
+ /* Write to the field */
- /*
- * Release global lock if we acquired it earlier
- */
+ Status = AcpiExInsertIntoField (ObjDesc, Buffer, Length);
AcpiExReleaseGlobalLock (Locked);
/* Free temporary buffer if we used one */
diff --git a/sys/contrib/dev/acpica/exfldio.c b/sys/contrib/dev/acpica/exfldio.c
index 60c3f7b..9ddd6e8 100644
--- a/sys/contrib/dev/acpica/exfldio.c
+++ b/sys/contrib/dev/acpica/exfldio.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exfldio - Aml Field I/O
- * $Revision: 88 $
+ * $Revision: 90 $
*
*****************************************************************************/
@@ -157,6 +157,8 @@ AcpiExSetupRegion (
RgnDesc = ObjDesc->CommonField.RegionObj;
+ /* We must have a valid region */
+
if (ACPI_GET_OBJECT_TYPE (RgnDesc) != ACPI_TYPE_REGION)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n",
@@ -179,6 +181,13 @@ AcpiExSetupRegion (
}
}
+ if (RgnDesc->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)
+ {
+ /* SMBus has a non-linear address space */
+
+ return_ACPI_STATUS (AE_OK);
+ }
+
/*
* Validate the request. The entire request from the byte offset for a
* length of one field datum (access width) must fit within the region.
@@ -225,8 +234,10 @@ AcpiExSetupRegion (
* PARAMETERS: *ObjDesc - Field to be read
* FieldDatumByteOffset - Byte offset of this datum within the
* parent field
- * *Value - Where to store value (must be 32 bits)
- * ReadWrite - Read or Write flag
+ * *Value - Where to store value (must at least
+ * the size of ACPI_INTEGER)
+ * Function - Read or Write flag plus other region-
+ * dependent flags
*
* RETURN: Status
*
@@ -239,7 +250,7 @@ AcpiExAccessRegion (
ACPI_OPERAND_OBJECT *ObjDesc,
UINT32 FieldDatumByteOffset,
ACPI_INTEGER *Value,
- UINT32 ReadWrite)
+ UINT32 Function)
{
ACPI_STATUS Status;
ACPI_OPERAND_OBJECT *RgnDesc;
@@ -249,6 +260,16 @@ AcpiExAccessRegion (
ACPI_FUNCTION_TRACE ("ExAccessRegion");
+ /*
+ * Ensure that the region operands are fully evaluated and verify
+ * the validity of the request
+ */
+ Status = AcpiExSetupRegion (ObjDesc, FieldDatumByteOffset);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+
/*
* The physical address of this field datum is:
*
@@ -261,7 +282,7 @@ AcpiExAccessRegion (
+ ObjDesc->CommonField.BaseByteOffset
+ FieldDatumByteOffset;
- if (ReadWrite == ACPI_READ)
+ if ((Function & ACPI_IO_MASK) == ACPI_READ)
{
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "[READ]"));
}
@@ -281,7 +302,7 @@ AcpiExAccessRegion (
/* Invoke the appropriate AddressSpace/OpRegion handler */
- Status = AcpiEvAddressSpaceDispatch (RgnDesc, ReadWrite,
+ Status = AcpiEvAddressSpaceDispatch (RgnDesc, Function,
Address, ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value);
if (ACPI_FAILURE (Status))
@@ -293,7 +314,6 @@ AcpiExAccessRegion (
AcpiUtGetRegionName (RgnDesc->Region.SpaceId),
RgnDesc->Region.SpaceId));
}
-
else if (Status == AE_NOT_EXIST)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
@@ -450,7 +470,7 @@ AcpiExFieldDatumIo (
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
/* Ensure that the BankValue is not beyond the capacity of the register */
@@ -480,23 +500,17 @@ AcpiExFieldDatumIo (
/*lint -fallthrough */
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
/*
* For simple RegionFields, we just directly access the owning
* Operation Region.
*/
- Status = AcpiExSetupRegion (ObjDesc, FieldDatumByteOffset);
- if (ACPI_FAILURE (Status))
- {
- return_ACPI_STATUS (Status);
- }
-
Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value,
ReadWrite);
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
/* Ensure that the IndexValue is not beyond the capacity of the register */
diff --git a/sys/contrib/dev/acpica/exmisc.c b/sys/contrib/dev/acpica/exmisc.c
index 537217b..7343ac5 100644
--- a/sys/contrib/dev/acpica/exmisc.c
+++ b/sys/contrib/dev/acpica/exmisc.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
- * $Revision: 109 $
+ * $Revision: 112 $
*
*****************************************************************************/
@@ -161,7 +161,7 @@ AcpiExGetObjectReference (
{
case ACPI_DESC_TYPE_OPERAND:
- if (ACPI_GET_OBJECT_TYPE (ObjDesc) != INTERNAL_TYPE_REFERENCE)
+ if (ACPI_GET_OBJECT_TYPE (ObjDesc) != ACPI_TYPE_LOCAL_REFERENCE)
{
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
@@ -207,7 +207,7 @@ AcpiExGetObjectReference (
/* Create a new reference object */
- ReferenceObj = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE);
+ ReferenceObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE);
if (!ReferenceObj)
{
return_ACPI_STATUS (AE_NO_MEMORY);
@@ -245,9 +245,8 @@ AcpiExConcatTemplate (
ACPI_OPERAND_OBJECT **ActualReturnDesc,
ACPI_WALK_STATE *WalkState)
{
- ACPI_STATUS Status;
ACPI_OPERAND_OBJECT *ReturnDesc;
- NATIVE_CHAR *NewBuf;
+ UINT8 *NewBuf;
UINT8 *EndTag1;
UINT8 *EndTag2;
ACPI_SIZE Length1;
@@ -266,56 +265,36 @@ AcpiExConcatTemplate (
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
- /* Create a new buffer object for the result */
-
- ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
- if (!ReturnDesc)
- {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- /* Allocate a new buffer for the result */
+ /* Compute the length of each part */
Length1 = ACPI_PTR_DIFF (EndTag1, ObjDesc1->Buffer.Pointer);
Length2 = ACPI_PTR_DIFF (EndTag2, ObjDesc2->Buffer.Pointer) +
2; /* Size of END_TAG */
- NewBuf = ACPI_MEM_ALLOCATE (Length1 + Length2);
- if (!NewBuf)
+ /* Create a new buffer object for the result */
+
+ ReturnDesc = AcpiUtCreateBufferObject (Length1 + Length2);
+ if (!ReturnDesc)
{
- ACPI_REPORT_ERROR
- (("ExConcatTemplate: Buffer allocation failure\n"));
- Status = AE_NO_MEMORY;
- goto Cleanup;
+ return_ACPI_STATUS (AE_NO_MEMORY);
}
/* Copy the templates to the new descriptor */
+ NewBuf = ReturnDesc->Buffer.Pointer;
ACPI_MEMCPY (NewBuf, ObjDesc1->Buffer.Pointer, Length1);
ACPI_MEMCPY (NewBuf + Length1, ObjDesc2->Buffer.Pointer, Length2);
- /* Complete the buffer object initialization */
-
- ReturnDesc->Common.Flags = AOPOBJ_DATA_VALID;
- ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf;
- ReturnDesc->Buffer.Length = (UINT32) (Length1 + Length2);
-
/* Compute the new checksum */
- NewBuf[ReturnDesc->Buffer.Length - 1] = (NATIVE_CHAR)
+ NewBuf[ReturnDesc->Buffer.Length - 1] =
AcpiUtGenerateChecksum (ReturnDesc->Buffer.Pointer,
- (ReturnDesc->Buffer.Length - 1));
+ (ReturnDesc->Buffer.Length - 1));
/* Return the completed template descriptor */
*ActualReturnDesc = ReturnDesc;
return_ACPI_STATUS (AE_OK);
-
-
-Cleanup:
-
- AcpiUtRemoveReference (ReturnDesc);
- return_ACPI_STATUS (Status);
}
@@ -363,24 +342,15 @@ AcpiExDoConcatenate (
case ACPI_TYPE_INTEGER:
/* Result of two Integers is a Buffer */
+ /* Need enough buffer space for two integers */
- ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
+ ReturnDesc = AcpiUtCreateBufferObject (AcpiGbl_IntegerByteWidth * 2);
if (!ReturnDesc)
{
return (AE_NO_MEMORY);
}
- /* Need enough buffer space for two integers */
-
- ReturnDesc->Buffer.Length = AcpiGbl_IntegerByteWidth * 2;
- NewBuf = ACPI_MEM_CALLOCATE (ReturnDesc->Buffer.Length);
- if (!NewBuf)
- {
- ACPI_REPORT_ERROR
- (("ExDoConcatenate: Buffer allocation failure\n"));
- Status = AE_NO_MEMORY;
- goto Cleanup;
- }
+ NewBuf = (NATIVE_CHAR *) ReturnDesc->Buffer.Pointer;
/* Convert the first integer */
@@ -400,10 +370,6 @@ AcpiExDoConcatenate (
ThisInteger >>= 8;
}
- /* Complete the buffer object initialization */
-
- ReturnDesc->Common.Flags = AOPOBJ_DATA_VALID;
- ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf;
break;
@@ -447,21 +413,15 @@ AcpiExDoConcatenate (
/* Result of two Buffers is a Buffer */
- ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
+ ReturnDesc = AcpiUtCreateBufferObject (
+ (ACPI_SIZE) ObjDesc1->Buffer.Length +
+ (ACPI_SIZE) ObjDesc2->Buffer.Length);
if (!ReturnDesc)
{
return (AE_NO_MEMORY);
}
- NewBuf = ACPI_MEM_ALLOCATE ((ACPI_SIZE) ObjDesc1->Buffer.Length +
- (ACPI_SIZE) ObjDesc2->Buffer.Length);
- if (!NewBuf)
- {
- ACPI_REPORT_ERROR
- (("ExDoConcatenate: Buffer allocation failure\n"));
- Status = AE_NO_MEMORY;
- goto Cleanup;
- }
+ NewBuf = (NATIVE_CHAR *) ReturnDesc->Buffer.Pointer;
/* Concatenate the buffers */
@@ -470,12 +430,6 @@ AcpiExDoConcatenate (
ACPI_MEMCPY (NewBuf + ObjDesc1->Buffer.Length, ObjDesc2->Buffer.Pointer,
ObjDesc2->Buffer.Length);
- /* Complete the buffer object initialization */
-
- ReturnDesc->Common.Flags = AOPOBJ_DATA_VALID;
- ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf;
- ReturnDesc->Buffer.Length = ObjDesc1->Buffer.Length +
- ObjDesc2->Buffer.Length;
break;
diff --git a/sys/contrib/dev/acpica/exmutex.c b/sys/contrib/dev/acpica/exmutex.c
index 51d6be3..3f4c8f0 100644
--- a/sys/contrib/dev/acpica/exmutex.c
+++ b/sys/contrib/dev/acpica/exmutex.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exmutex - ASL Mutex Acquire/Release functions
- * $Revision: 13 $
+ * $Revision: 16 $
*
*****************************************************************************/
@@ -229,24 +229,38 @@ AcpiExAcquireMutex (
ACPI_FUNCTION_TRACE_PTR ("ExAcquireMutex", ObjDesc);
+
if (!ObjDesc)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
+ /* Sanity check -- we must have a valid thread ID */
+
+ if (!WalkState->Thread)
+ {
+ ACPI_REPORT_ERROR (("Cannot acquire Mutex [%4.4s], null thread info\n",
+ ObjDesc->Mutex.Node->Name.Ascii));
+ return_ACPI_STATUS (AE_AML_INTERNAL);
+ }
+
/*
* Current Sync must be less than or equal to the sync level of the
* mutex. This mechanism provides some deadlock prevention
*/
if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel)
{
+ ACPI_REPORT_ERROR (("Cannot acquire Mutex [%4.4s], incorrect SyncLevel\n",
+ ObjDesc->Mutex.Node->Name.Ascii));
return_ACPI_STATUS (AE_AML_MUTEX_ORDER);
}
/*
* Support for multiple acquires by the owning thread
*/
- if (ObjDesc->Mutex.OwnerThread == WalkState->Thread)
+
+ if ((ObjDesc->Mutex.OwnerThread) &&
+ (ObjDesc->Mutex.OwnerThread->ThreadId == WalkState->Thread->ThreadId))
{
/*
* The mutex is already owned by this thread,
@@ -313,13 +327,29 @@ AcpiExReleaseMutex (
if (!ObjDesc->Mutex.OwnerThread)
{
+ ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], not acquired\n",
+ ObjDesc->Mutex.Node->Name.Ascii));
return_ACPI_STATUS (AE_AML_MUTEX_NOT_ACQUIRED);
}
+ /* Sanity check -- we must have a valid thread ID */
+
+ if (!WalkState->Thread)
+ {
+ ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], null thread info\n",
+ ObjDesc->Mutex.Node->Name.Ascii));
+ return_ACPI_STATUS (AE_AML_INTERNAL);
+ }
+
/* The Mutex is owned, but this thread must be the owner */
- if (ObjDesc->Mutex.OwnerThread != WalkState->Thread)
+ if (ObjDesc->Mutex.OwnerThread->ThreadId != WalkState->Thread->ThreadId)
{
+ ACPI_REPORT_ERROR ((
+ "Thread %X cannot release Mutex [%4.4s] acquired by thread %X\n",
+ WalkState->Thread->ThreadId,
+ ObjDesc->Mutex.Node->Name.Ascii,
+ ObjDesc->Mutex.OwnerThread->ThreadId));
return_ACPI_STATUS (AE_AML_NOT_OWNER);
}
@@ -329,6 +359,8 @@ AcpiExReleaseMutex (
*/
if (ObjDesc->Mutex.SyncLevel > WalkState->Thread->CurrentSyncLevel)
{
+ ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], incorrect SyncLevel\n",
+ ObjDesc->Mutex.Node->Name.Ascii));
return_ACPI_STATUS (AE_AML_MUTEX_ORDER);
}
diff --git a/sys/contrib/dev/acpica/exnames.c b/sys/contrib/dev/acpica/exnames.c
index 5ac03cc..8069189 100644
--- a/sys/contrib/dev/acpica/exnames.c
+++ b/sys/contrib/dev/acpica/exnames.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exnames - interpreter/scanner name load/execute
- * $Revision: 91 $
+ * $Revision: 92 $
*
*****************************************************************************/
@@ -354,9 +354,9 @@ AcpiExGetNameString (
ACPI_FUNCTION_TRACE_PTR ("ExGetNameString", AmlAddress);
- if (INTERNAL_TYPE_REGION_FIELD == DataType ||
- INTERNAL_TYPE_BANK_FIELD == DataType ||
- INTERNAL_TYPE_INDEX_FIELD == DataType)
+ if (ACPI_TYPE_LOCAL_REGION_FIELD == DataType ||
+ ACPI_TYPE_LOCAL_BANK_FIELD == DataType ||
+ ACPI_TYPE_LOCAL_INDEX_FIELD == DataType)
{
/* Disallow prefixes for types associated with FieldUnit names */
diff --git a/sys/contrib/dev/acpica/exoparg1.c b/sys/contrib/dev/acpica/exoparg1.c
index 60d65b7..1600e62 100644
--- a/sys/contrib/dev/acpica/exoparg1.c
+++ b/sys/contrib/dev/acpica/exoparg1.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exoparg1 - AML execution - opcodes with 1 argument
- * $Revision: 143 $
+ * $Revision: 146 $
*
*****************************************************************************/
@@ -453,12 +453,6 @@ AcpiExOpcode_1A_1T_1R (
* return FALSE
*/
ReturnDesc->Integer.Value = 0;
-
- /*
- * Must delete the result descriptor since there is no reference
- * being returned
- */
- AcpiUtRemoveReference (Operand[1]);
goto Cleanup;
}
@@ -499,14 +493,19 @@ AcpiExOpcode_1A_1T_1R (
return_ACPI_STATUS (Status);
}
- /*
- * Normally, we would remove a reference on the Operand[0] parameter;
- * But since it is being used as the internal return object
- * (meaning we would normally increment it), the two cancel out,
- * and we simply don't do anything.
- */
- WalkState->ResultObj = Operand[0];
- WalkState->Operands[0] = NULL; /* Prevent deletion */
+ /* It is possible that the Store already produced a return object */
+
+ if (!WalkState->ResultObj)
+ {
+ /*
+ * Normally, we would remove a reference on the Operand[0] parameter;
+ * But since it is being used as the internal return object
+ * (meaning we would normally increment it), the two cancel out,
+ * and we simply don't do anything.
+ */
+ WalkState->ResultObj = Operand[0];
+ WalkState->Operands[0] = NULL; /* Prevent deletion */
+ }
return_ACPI_STATUS (Status);
@@ -571,7 +570,10 @@ AcpiExOpcode_1A_1T_1R (
Cleanup:
- WalkState->ResultObj = ReturnDesc;
+ if (!WalkState->ResultObj)
+ {
+ WalkState->ResultObj = ReturnDesc;
+ }
/* Delete return object on error */
@@ -767,7 +769,7 @@ AcpiExOpcode_1A_0T_1R (
{
switch (ACPI_GET_OBJECT_TYPE (Operand[0]))
{
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
/*
* This is a DerefOf (LocalX | ArgX)
*
diff --git a/sys/contrib/dev/acpica/exoparg2.c b/sys/contrib/dev/acpica/exoparg2.c
index 465809f..4d3acbd 100644
--- a/sys/contrib/dev/acpica/exoparg2.c
+++ b/sys/contrib/dev/acpica/exoparg2.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exoparg2 - AML execution - opcodes with 2 arguments
- * $Revision: 111 $
+ * $Revision: 115 $
*
*****************************************************************************/
@@ -344,11 +344,11 @@ ACPI_STATUS
AcpiExOpcode_2A_1T_1R (
ACPI_WALK_STATE *WalkState)
{
- ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
+ ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
ACPI_OPERAND_OBJECT *ReturnDesc = NULL;
ACPI_OPERAND_OBJECT *TempDesc = NULL;
UINT32 Index;
- ACPI_STATUS Status = AE_OK;
+ ACPI_STATUS Status = AE_OK;
ACPI_SIZE Length;
@@ -493,7 +493,7 @@ AcpiExOpcode_2A_1T_1R (
/* Set the string length */
- ReturnDesc->String.Length = Length;
+ ReturnDesc->String.Length = (UINT32) Length;
break;
@@ -507,7 +507,7 @@ AcpiExOpcode_2A_1T_1R (
/* Create the internal return object */
- ReturnDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_REFERENCE);
+ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE);
if (!ReturnDesc)
{
Status = AE_NO_MEMORY;
@@ -531,41 +531,10 @@ AcpiExOpcode_2A_1T_1R (
goto Cleanup;
}
- if ((ACPI_GET_OBJECT_TYPE (Operand[2]) == ACPI_TYPE_INTEGER) &&
- (Operand[2]->Common.Flags & AOPOBJ_AML_CONSTANT))
- {
- /*
- * There is no actual result descriptor (the ZeroOp/Constant Result
- * descriptor is a placeholder), so just delete the placeholder and
- * return a reference to the package element
- */
- AcpiUtRemoveReference (Operand[2]);
- }
-
- else
- {
- /*
- * Each element of the package is an internal object. Get the one
- * we are after.
- */
- TempDesc = Operand[0]->Package.Elements [Index];
- ReturnDesc->Reference.Opcode = AML_INDEX_OP;
- ReturnDesc->Reference.TargetType = ACPI_GET_OBJECT_TYPE (TempDesc);
- ReturnDesc->Reference.Object = TempDesc;
-
- Status = AcpiExStore (ReturnDesc, Operand[2], WalkState);
- ReturnDesc->Reference.Object = NULL;
- }
-
- /*
- * The local return object must always be a reference to the package element,
- * not the element itself.
- */
- ReturnDesc->Reference.Opcode = AML_INDEX_OP;
ReturnDesc->Reference.TargetType = ACPI_TYPE_PACKAGE;
+ ReturnDesc->Reference.Object = Operand[0]->Package.Elements [Index];
ReturnDesc->Reference.Where = &Operand[0]->Package.Elements [Index];
}
-
else
{
/* Object to be indexed is a Buffer */
@@ -578,14 +547,21 @@ AcpiExOpcode_2A_1T_1R (
goto Cleanup;
}
- ReturnDesc->Reference.Opcode = AML_INDEX_OP;
- ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD;
- ReturnDesc->Reference.Object = Operand[0];
- ReturnDesc->Reference.Offset = Index;
-
- Status = AcpiExStore (ReturnDesc, Operand[2], WalkState);
+ ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD;
+ ReturnDesc->Reference.Object = Operand[0];
}
+ /* Complete the Index reference object */
+
+ ReturnDesc->Reference.Opcode = AML_INDEX_OP;
+ ReturnDesc->Reference.Offset = Index;
+
+ /* Store the reference to the Target */
+
+ Status = AcpiExStore (ReturnDesc, Operand[2], WalkState);
+
+ /* Return the reference */
+
WalkState->ResultObj = ReturnDesc;
goto Cleanup;
@@ -613,7 +589,10 @@ StoreResultToTarget:
goto Cleanup;
}
- WalkState->ResultObj = ReturnDesc;
+ if (!WalkState->ResultObj)
+ {
+ WalkState->ResultObj = ReturnDesc;
+ }
}
diff --git a/sys/contrib/dev/acpica/exoparg3.c b/sys/contrib/dev/acpica/exoparg3.c
index f2aa714..baf9bfe 100644
--- a/sys/contrib/dev/acpica/exoparg3.c
+++ b/sys/contrib/dev/acpica/exoparg3.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exoparg3 - AML execution - opcodes with 3 arguments
- * $Revision: 14 $
+ * $Revision: 15 $
*
*****************************************************************************/
@@ -327,7 +327,10 @@ Cleanup:
/* Set the return object and exit */
- WalkState->ResultObj = ReturnDesc;
+ if (!WalkState->ResultObj)
+ {
+ WalkState->ResultObj = ReturnDesc;
+ }
return_ACPI_STATUS (Status);
}
diff --git a/sys/contrib/dev/acpica/exprep.c b/sys/contrib/dev/acpica/exprep.c
index 2aeb7eed..e9ed816 100644
--- a/sys/contrib/dev/acpica/exprep.c
+++ b/sys/contrib/dev/acpica/exprep.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exprep - ACPI AML (p-code) execution - field prep utilities
- * $Revision: 119 $
+ * $Revision: 121 $
*
*****************************************************************************/
@@ -205,28 +205,24 @@ AcpiExDecodeFieldAccess (
break;
case AML_FIELD_ACCESS_BYTE:
+ case AML_FIELD_ACCESS_BUFFER: /* ACPI 2.0 (SMBus Buffer) */
ByteAlignment = 1;
- BitLength = 8;
+ BitLength = 8;
break;
case AML_FIELD_ACCESS_WORD:
ByteAlignment = 2;
- BitLength = 16;
+ BitLength = 16;
break;
case AML_FIELD_ACCESS_DWORD:
ByteAlignment = 4;
- BitLength = 32;
+ BitLength = 32;
break;
- case AML_FIELD_ACCESS_QWORD: /* ACPI 2.0 */
+ case AML_FIELD_ACCESS_QWORD: /* ACPI 2.0 */
ByteAlignment = 8;
- BitLength = 64;
- break;
-
- case AML_FIELD_ACCESS_BUFFER: /* ACPI 2.0 */
- ByteAlignment = 8;
- BitLength = 8;
+ BitLength = 64;
break;
default:
@@ -414,7 +410,7 @@ AcpiExPrepFieldValue (
/* Parameter validation */
- if (Info->FieldType != INTERNAL_TYPE_INDEX_FIELD)
+ if (Info->FieldType != ACPI_TYPE_LOCAL_INDEX_FIELD)
{
if (!Info->RegionNode)
{
@@ -456,7 +452,7 @@ AcpiExPrepFieldValue (
switch (Info->FieldType)
{
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode);
@@ -471,7 +467,7 @@ AcpiExPrepFieldValue (
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
ObjDesc->BankField.Value = Info->BankValue;
ObjDesc->BankField.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode);
@@ -492,7 +488,7 @@ AcpiExPrepFieldValue (
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject (Info->RegisterNode);
ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject (Info->DataRegisterNode);
diff --git a/sys/contrib/dev/acpica/exresnte.c b/sys/contrib/dev/acpica/exresnte.c
index cb38295..c999b15 100644
--- a/sys/contrib/dev/acpica/exresnte.c
+++ b/sys/contrib/dev/acpica/exresnte.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresnte - AML Interpreter object resolution
- * $Revision: 59 $
+ * $Revision: 61 $
*
*****************************************************************************/
@@ -177,10 +177,10 @@ AcpiExResolveNodeToValue (
SourceDesc = AcpiNsGetAttachedObject (Node);
EntryType = AcpiNsGetType ((ACPI_HANDLE) Node);
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p Type=%X\n",
- Node, SourceDesc, EntryType));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n",
+ Node, SourceDesc, AcpiUtGetTypeName (EntryType)));
- if (EntryType == INTERNAL_TYPE_ALIAS)
+ if (EntryType == ACPI_TYPE_LOCAL_ALIAS)
{
/* There is always exactly one level of indirection */
@@ -287,9 +287,9 @@ AcpiExResolveNodeToValue (
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead Node=%p SourceDesc=%p Type=%X\n",
Node, SourceDesc, EntryType));
@@ -325,7 +325,7 @@ AcpiExResolveNodeToValue (
return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
/* No named references are allowed here */
diff --git a/sys/contrib/dev/acpica/exresolv.c b/sys/contrib/dev/acpica/exresolv.c
index 9b8b610..e5bc4f3 100644
--- a/sys/contrib/dev/acpica/exresolv.c
+++ b/sys/contrib/dev/acpica/exresolv.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresolv - AML Interpreter object resolution
- * $Revision: 116 $
+ * $Revision: 117 $
*
*****************************************************************************/
@@ -230,7 +230,7 @@ AcpiExResolveObjectToValue (
switch (ACPI_GET_OBJECT_TYPE (StackDesc))
{
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
Opcode = StackDesc->Reference.Opcode;
@@ -365,9 +365,9 @@ AcpiExResolveObjectToValue (
* These cases may never happen here, but just in case..
*/
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n",
StackDesc, ACPI_GET_OBJECT_TYPE (StackDesc)));
@@ -412,7 +412,7 @@ AcpiExResolveMultiple (
ACPI_OBJECT_TYPE Type;
- ACPI_FUNCTION_TRACE ("ExGetObjectType");
+ ACPI_FUNCTION_TRACE ("AcpiExResolveMultiple");
/*
@@ -421,7 +421,7 @@ AcpiExResolveMultiple (
* of the ObjectType and SizeOf operators). This means traversing
* the list of possibly many nested references.
*/
- while (ACPI_GET_OBJECT_TYPE (ObjDesc) == INTERNAL_TYPE_REFERENCE)
+ while (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_REFERENCE)
{
switch (ObjDesc->Reference.Opcode)
{
@@ -540,13 +540,20 @@ Exit:
switch (Type)
{
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
Type = ACPI_TYPE_FIELD_UNIT;
break;
+ case ACPI_TYPE_LOCAL_SCOPE:
+
+ /* Per ACPI Specification, Scope is untyped */
+
+ Type = ACPI_TYPE_ANY;
+ break;
+
default:
/* No change to Type required */
break;
diff --git a/sys/contrib/dev/acpica/exresop.c b/sys/contrib/dev/acpica/exresop.c
index 92592e6..7e46b7b 100644
--- a/sys/contrib/dev/acpica/exresop.c
+++ b/sys/contrib/dev/acpica/exresop.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresop - AML Interpreter operand/object resolution
- * $Revision: 58 $
+ * $Revision: 60 $
*
*****************************************************************************/
@@ -157,7 +157,7 @@ AcpiExCheckObjectType (
return (AE_OK);
}
- if (TypeNeeded == INTERNAL_TYPE_REFERENCE)
+ if (TypeNeeded == ACPI_TYPE_LOCAL_REFERENCE)
{
/*
* Allow the AML "Constant" opcodes (Zero, One, etc.) to be reference
@@ -284,7 +284,7 @@ AcpiExResolveOperands (
/* Check for bad ACPI_OBJECT_TYPE */
- if (!AcpiExValidateObjectType (ObjectType))
+ if (!AcpiUtValidObjectType (ObjectType))
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad operand object type [%X]\n",
ObjectType));
@@ -292,7 +292,7 @@ AcpiExResolveOperands (
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
- if (ObjectType == (UINT8) INTERNAL_TYPE_REFERENCE)
+ if (ObjectType == (UINT8) ACPI_TYPE_LOCAL_REFERENCE)
{
/*
* Decode the Reference
@@ -374,14 +374,14 @@ AcpiExResolveOperands (
case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */
case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */
- /* Need an operand of type INTERNAL_TYPE_REFERENCE */
+ /* Need an operand of type ACPI_TYPE_LOCAL_REFERENCE */
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) /* Node (name) ptr OK as-is */
{
goto NextOperand;
}
- Status = AcpiExCheckObjectType (INTERNAL_TYPE_REFERENCE,
+ Status = AcpiExCheckObjectType (ACPI_TYPE_LOCAL_REFERENCE,
ObjectType, ObjDesc);
if (ACPI_FAILURE (Status))
{
@@ -410,7 +410,7 @@ AcpiExResolveOperands (
* -- All others must be resolved below.
*/
if ((Opcode == AML_STORE_OP) &&
- (ACPI_GET_OBJECT_TYPE (*StackPtr) == INTERNAL_TYPE_REFERENCE) &&
+ (ACPI_GET_OBJECT_TYPE (*StackPtr) == ACPI_TYPE_LOCAL_REFERENCE) &&
((*StackPtr)->Reference.Opcode == AML_INDEX_OP))
{
goto NextOperand;
@@ -466,13 +466,6 @@ AcpiExResolveOperands (
TypeNeeded = ACPI_TYPE_REGION;
break;
- case ARGI_IF: /* If */
-
- /* Need an operand of type INTERNAL_TYPE_IF */
-
- TypeNeeded = INTERNAL_TYPE_IF;
- break;
-
case ARGI_PACKAGE: /* Package */
/* Need an operand of type ACPI_TYPE_PACKAGE */
@@ -512,15 +505,6 @@ AcpiExResolveOperands (
return_ACPI_STATUS (Status);
}
-
- if (ObjDesc != *StackPtr)
- {
- /*
- * We just created a new object, remove a reference
- * on the original operand object
- */
- AcpiUtRemoveReference (ObjDesc);
- }
goto NextOperand;
@@ -545,15 +529,6 @@ AcpiExResolveOperands (
return_ACPI_STATUS (Status);
}
-
- if (ObjDesc != *StackPtr)
- {
- /*
- * We just created a new object, remove a reference
- * on the original operand object
- */
- AcpiUtRemoveReference (ObjDesc);
- }
goto NextOperand;
@@ -578,15 +553,6 @@ AcpiExResolveOperands (
return_ACPI_STATUS (Status);
}
-
- if (ObjDesc != *StackPtr)
- {
- /*
- * We just created a new object, remove a reference
- * on the original operand object
- */
- AcpiUtRemoveReference (ObjDesc);
- }
goto NextOperand;
@@ -626,7 +592,7 @@ AcpiExResolveOperands (
case ACPI_TYPE_PACKAGE:
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
/* Valid operand */
break;
diff --git a/sys/contrib/dev/acpica/exstore.c b/sys/contrib/dev/acpica/exstore.c
index 92caf43..237ccee 100644
--- a/sys/contrib/dev/acpica/exstore.c
+++ b/sys/contrib/dev/acpica/exstore.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exstore - AML Interpreter object store support
- * $Revision: 172 $
+ * $Revision: 174 $
*
*****************************************************************************/
@@ -175,7 +175,7 @@ AcpiExStore (
{
/*
* Dest is a namespace node,
- * Storing an object into a Name "container"
+ * Storing an object into a Named node.
*/
Status = AcpiExStoreObjectToNode (SourceDesc,
(ACPI_NAMESPACE_NODE *) DestDesc, WalkState);
@@ -187,7 +187,7 @@ AcpiExStore (
switch (ACPI_GET_OBJECT_TYPE (DestDesc))
{
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
break;
case ACPI_TYPE_INTEGER:
@@ -534,14 +534,14 @@ AcpiExStoreObjectToNode (
switch (TargetType)
{
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
/*
* For fields, copy the source data to the target field.
*/
- Status = AcpiExWriteDataToField (SourceDesc, TargetDesc);
+ Status = AcpiExWriteDataToField (SourceDesc, TargetDesc, &WalkState->ResultObj);
break;
diff --git a/sys/contrib/dev/acpica/exstoren.c b/sys/contrib/dev/acpica/exstoren.c
index 712fcdd..961d642 100644
--- a/sys/contrib/dev/acpica/exstoren.c
+++ b/sys/contrib/dev/acpica/exstoren.c
@@ -3,7 +3,7 @@
*
* Module Name: exstoren - AML Interpreter object store support,
* Store to Node (namespace object)
- * $Revision: 51 $
+ * $Revision: 52 $
*
*****************************************************************************/
@@ -160,9 +160,9 @@ AcpiExResolveObject (
switch (TargetType)
{
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
/*
* These cases all require only Integers or values that
* can be converted to Integers (Strings or Buffers)
@@ -177,7 +177,7 @@ AcpiExResolveObject (
* are all essentially the same. This case handles the
* "interchangeable" types Integer, String, and Buffer.
*/
- if (ACPI_GET_OBJECT_TYPE (SourceDesc) == INTERNAL_TYPE_REFERENCE)
+ if (ACPI_GET_OBJECT_TYPE (SourceDesc) == ACPI_TYPE_LOCAL_REFERENCE)
{
/* Resolve a reference object first */
@@ -207,7 +207,7 @@ AcpiExResolveObject (
break;
- case INTERNAL_TYPE_ALIAS:
+ case ACPI_TYPE_LOCAL_ALIAS:
/*
* Aliases are resolved by AcpiExPrepOperands
diff --git a/sys/contrib/dev/acpica/exstorob.c b/sys/contrib/dev/acpica/exstorob.c
index 9a3bee8..f9be073 100644
--- a/sys/contrib/dev/acpica/exstorob.c
+++ b/sys/contrib/dev/acpica/exstorob.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exstorob - AML Interpreter object store support, store to object
- * $Revision: 45 $
+ * $Revision: 46 $
*
*****************************************************************************/
@@ -241,7 +241,7 @@ AcpiExStoreStringToString (
* String will fit in existing buffer.
* Clear old string and copy in the new one
*/
- ACPI_MEMSET (TargetDesc->String.Pointer, 0, TargetDesc->String.Length + 1);
+ ACPI_MEMSET (TargetDesc->String.Pointer, 0, (ACPI_SIZE) TargetDesc->String.Length + 1);
ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length);
}
else
diff --git a/sys/contrib/dev/acpica/exsystem.c b/sys/contrib/dev/acpica/exsystem.c
index 0ec8d84..04119b2 100644
--- a/sys/contrib/dev/acpica/exsystem.c
+++ b/sys/contrib/dev/acpica/exsystem.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exsystem - Interface to OS services
- * $Revision: 73 $
+ * $Revision: 74 $
*
*****************************************************************************/
@@ -143,7 +143,7 @@
ACPI_STATUS
AcpiExSystemWaitSemaphore (
ACPI_HANDLE Semaphore,
- UINT32 Timeout)
+ UINT16 Timeout)
{
ACPI_STATUS Status;
ACPI_STATUS Status2;
@@ -300,12 +300,12 @@ AcpiExSystemAcquireMutex (
*/
if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore)
{
- Status = AcpiEvAcquireGlobalLock ((UINT32) TimeDesc->Integer.Value);
+ Status = AcpiEvAcquireGlobalLock ((UINT16) TimeDesc->Integer.Value);
return_ACPI_STATUS (Status);
}
Status = AcpiExSystemWaitSemaphore (ObjDesc->Mutex.Semaphore,
- (UINT32) TimeDesc->Integer.Value);
+ (UINT16) TimeDesc->Integer.Value);
return_ACPI_STATUS (Status);
}
@@ -415,7 +415,7 @@ AcpiExSystemWaitEvent (
if (ObjDesc)
{
Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.Semaphore,
- (UINT32) TimeDesc->Integer.Value);
+ (UINT16) TimeDesc->Integer.Value);
}
return_ACPI_STATUS (Status);
diff --git a/sys/contrib/dev/acpica/exutils.c b/sys/contrib/dev/acpica/exutils.c
index 0e75d9d..599f0af 100644
--- a/sys/contrib/dev/acpica/exutils.c
+++ b/sys/contrib/dev/acpica/exutils.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exutils - interpreter/scanner utilities
- * $Revision: 103 $
+ * $Revision: 106 $
*
*****************************************************************************/
@@ -142,33 +142,6 @@
ACPI_MODULE_NAME ("exutils")
-/*******************************************************************************
- *
- * FUNCTION: AcpiExValidateObjectType
- *
- * PARAMETERS: Type Object type to validate
- *
- * DESCRIPTION: Determine if a type is a valid ACPI object type
- *
- ******************************************************************************/
-
-BOOLEAN
-AcpiExValidateObjectType (
- ACPI_OBJECT_TYPE Type)
-{
-
- ACPI_FUNCTION_ENTRY ();
-
-
- if ((Type > ACPI_TYPE_MAX && Type < INTERNAL_TYPE_BEGIN) ||
- (Type > INTERNAL_TYPE_MAX))
- {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
#ifndef ACPI_NO_METHOD_EXECUTION
/*******************************************************************************
@@ -313,7 +286,7 @@ AcpiExAcquireGlobalLock (
{
/* We should attempt to get the lock, wait forever */
- Status = AcpiEvAcquireGlobalLock (ACPI_UINT32_MAX);
+ Status = AcpiEvAcquireGlobalLock (ACPI_WAIT_FOREVER);
if (ACPI_SUCCESS (Status))
{
Locked = TRUE;
@@ -439,7 +412,7 @@ AcpiExEisaIdToString (
EisaId = AcpiUtDwordByteSwap (NumericId);
- OutString[0] = (char) ('@' + ((EisaId >> 26) & 0x1f));
+ OutString[0] = (char) ('@' + (((unsigned long) EisaId >> 26) & 0x1f));
OutString[1] = (char) ('@' + ((EisaId >> 21) & 0x1f));
OutString[2] = (char) ('@' + ((EisaId >> 16) & 0x1f));
OutString[3] = AcpiUtHexToAsciiChar ((ACPI_INTEGER) EisaId, 12);
diff --git a/sys/contrib/dev/acpica/hwsleep.c b/sys/contrib/dev/acpica/hwsleep.c
index 92ef1e9..78c51a9 100644
--- a/sys/contrib/dev/acpica/hwsleep.c
+++ b/sys/contrib/dev/acpica/hwsleep.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface
- * $Revision: 46 $
+ * $Revision: 47 $
*
*****************************************************************************/
@@ -422,6 +422,12 @@ AcpiEnterSleepState (
} while (!InValue);
+ Status = AcpiSetRegister (ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+
return_ACPI_STATUS (AE_OK);
}
diff --git a/sys/contrib/dev/acpica/nsaccess.c b/sys/contrib/dev/acpica/nsaccess.c
index 92594d0..51e89ea 100644
--- a/sys/contrib/dev/acpica/nsaccess.c
+++ b/sys/contrib/dev/acpica/nsaccess.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsaccess - Top-level functions for accessing ACPI namespace
- * $Revision: 161 $
+ * $Revision: 165 $
*
******************************************************************************/
@@ -241,7 +241,7 @@ AcpiNsRootInitialize (void)
/*
* Build an object around the static string
*/
- ObjDesc->String.Length = ACPI_STRLEN (InitVal->Val);
+ ObjDesc->String.Length = (UINT32) ACPI_STRLEN (InitVal->Val);
ObjDesc->String.Pointer = InitVal->Val;
ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER;
break;
@@ -249,6 +249,7 @@ AcpiNsRootInitialize (void)
case ACPI_TYPE_MUTEX:
+ ObjDesc->Mutex.Node = NewNode;
ObjDesc->Mutex.SyncLevel =
(UINT16) ACPI_STRTOUL (InitVal->Val, NULL, 10);
@@ -349,6 +350,7 @@ AcpiNsLookup (
ACPI_NAMESPACE_NODE *CurrentNode = NULL;
ACPI_NAMESPACE_NODE *ThisNode = NULL;
UINT32 NumSegments;
+ UINT32 NumCarats;
ACPI_NAME SimpleName;
ACPI_OBJECT_TYPE TypeToCheckFor;
ACPI_OBJECT_TYPE ThisSearchType;
@@ -408,29 +410,9 @@ AcpiNsLookup (
}
}
- /*
- * This check is explicitly split to relax the TypeToCheckFor
- * conditions for BankFieldDefn. Originally, both BankFieldDefn and
- * DefFieldDefn caused TypeToCheckFor to be set to ACPI_TYPE_REGION,
- * but the BankFieldDefn may also check for a Field definition as well
- * as an OperationRegion.
- */
- if (INTERNAL_TYPE_FIELD_DEFN == Type)
- {
- /* DefFieldDefn defines fields in a Region */
+ /* Save type TBD: may be no longer necessary */
- TypeToCheckFor = ACPI_TYPE_REGION;
- }
- else if (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)
- {
- /* BankFieldDefn defines data fields in a Field Object */
-
- TypeToCheckFor = ACPI_TYPE_ANY;
- }
- else
- {
- TypeToCheckFor = Type;
- }
+ TypeToCheckFor = Type;
/*
* Begin examination of the actual pathname
@@ -480,14 +462,15 @@ AcpiNsLookup (
/* Pathname is relative to current scope, start there */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
- "Searching relative to prefix scope [%p]\n",
- PrefixNode));
+ "Searching relative to prefix scope [%4.4s] (%p)\n",
+ PrefixNode->Name.Ascii, PrefixNode));
/*
* Handle multiple Parent Prefixes (carat) by just getting
* the parent node for each prefix instance.
*/
ThisNode = PrefixNode;
+ NumCarats = 0;
while (*Path == (UINT8) AML_PARENT_PREFIX)
{
/* Name is fully qualified, no search rules apply */
@@ -501,6 +484,7 @@ AcpiNsLookup (
/* Backup to the parent node */
+ NumCarats++;
ThisNode = AcpiNsGetParentNode (ThisNode);
if (!ThisNode)
{
@@ -515,7 +499,8 @@ AcpiNsLookup (
if (SearchParentFlag == ACPI_NS_NO_UPSEARCH)
{
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
- "Path is absolute with one or more carats\n"));
+ "Search scope is [%4.4s], path has %d carat(s)\n",
+ ThisNode->Name.Ascii, NumCarats));
}
}
@@ -540,6 +525,7 @@ AcpiNsLookup (
* have the correct target node and there are no name segments.
*/
NumSegments = 0;
+ Type = ThisNode->Type;
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Prefix-only Pathname (Zero name segments), Flags=%X\n", Flags));
@@ -651,6 +637,7 @@ AcpiNsLookup (
CurrentNode));
}
+ *ReturnNode = ThisNode;
return_ACPI_STATUS (Status);
}
@@ -661,28 +648,25 @@ AcpiNsLookup (
* 2) And we are looking for a specific type
* (Not checking for TYPE_ANY)
* 3) Which is not an alias
- * 4) Which is not a local type (TYPE_DEF_ANY)
- * 5) Which is not a local type (TYPE_SCOPE)
- * 6) Which is not a local type (TYPE_INDEX_FIELD_DEFN)
- * 7) And the type of target object is known (not TYPE_ANY)
- * 8) And target object does not match what we are looking for
+ * 4) Which is not a local type (TYPE_SCOPE)
+ * 5) And the type of target object is known (not TYPE_ANY)
+ * 6) And target object does not match what we are looking for
*
* Then we have a type mismatch. Just warn and ignore it.
*/
if ((NumSegments == 0) &&
(TypeToCheckFor != ACPI_TYPE_ANY) &&
- (TypeToCheckFor != INTERNAL_TYPE_ALIAS) &&
- (TypeToCheckFor != INTERNAL_TYPE_DEF_ANY) &&
- (TypeToCheckFor != INTERNAL_TYPE_SCOPE) &&
- (TypeToCheckFor != INTERNAL_TYPE_INDEX_FIELD_DEFN) &&
+ (TypeToCheckFor != ACPI_TYPE_LOCAL_ALIAS) &&
+ (TypeToCheckFor != ACPI_TYPE_LOCAL_SCOPE) &&
(ThisNode->Type != ACPI_TYPE_ANY) &&
(ThisNode->Type != TypeToCheckFor))
{
/* Complain about a type mismatch */
ACPI_REPORT_WARNING (
- ("NsLookup: %4.4s, type %X, checking for type %X\n",
- (char *) &SimpleName, ThisNode->Type, TypeToCheckFor));
+ ("NsLookup: Type mismatch on %4.4s (%s), searching for (%s)\n",
+ (char *) &SimpleName, AcpiUtGetTypeName (ThisNode->Type),
+ AcpiUtGetTypeName (TypeToCheckFor)));
}
/*
@@ -710,17 +694,13 @@ AcpiNsLookup (
* If entry is a type which opens a scope, push the new scope on the
* scope stack.
*/
- if (AcpiNsOpensScope (TypeToCheckFor))
+ if (AcpiNsOpensScope (Type))
{
Status = AcpiDsScopeStackPush (ThisNode, Type, WalkState);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
-
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
- "Setting current scope to [%4.4s] (%p)\n",
- ThisNode->Name.Ascii, ThisNode));
}
}
diff --git a/sys/contrib/dev/acpica/nsalloc.c b/sys/contrib/dev/acpica/nsalloc.c
index cab91bd..16160aa 100644
--- a/sys/contrib/dev/acpica/nsalloc.c
+++ b/sys/contrib/dev/acpica/nsalloc.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsalloc - Namespace allocation and deletion utilities
- * $Revision: 74 $
+ * $Revision: 77 $
*
******************************************************************************/
@@ -223,6 +223,60 @@ AcpiNsDeleteNode (
}
+#ifdef ACPI_ALPHABETIC_NAMESPACE
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiNsCompareNames
+ *
+ * PARAMETERS: Name1 - First name to compare
+ * Name2 - Second name to compare
+ *
+ * RETURN: value from strncmp
+ *
+ * DESCRIPTION: Compare two ACPI names. Names that are prefixed with an
+ * underscore are forced to be alphabetically first.
+ *
+ ******************************************************************************/
+
+int
+AcpiNsCompareNames (
+ char *Name1,
+ char *Name2)
+{
+ char ReversedName1[ACPI_NAME_SIZE];
+ char ReversedName2[ACPI_NAME_SIZE];
+ UINT32 i;
+ UINT32 j;
+
+
+ /*
+ * Replace all instances of "underscore" with a value that is smaller so
+ * that all names that are prefixed with underscore(s) are alphabetically
+ * first.
+ *
+ * Reverse the name bytewise so we can just do a 32-bit compare instead
+ * of a strncmp.
+ */
+ for (i = 0, j= (ACPI_NAME_SIZE - 1); i < ACPI_NAME_SIZE; i++, j--)
+ {
+ ReversedName1[j] = Name1[i];
+ if (Name1[i] == '_')
+ {
+ ReversedName1[j] = '*';
+ }
+
+ ReversedName2[j] = Name2[i];
+ if (Name2[i] == '_')
+ {
+ ReversedName2[j] = '*';
+ }
+ }
+
+ return (*(int *) ReversedName1 - *(int *) ReversedName2);
+}
+#endif
+
+
/*******************************************************************************
*
* FUNCTION: AcpiNsInstallNode
@@ -237,8 +291,10 @@ AcpiNsDeleteNode (
* DESCRIPTION: Initialize a new namespace node and install it amongst
* its peers.
*
- * Note: Current namespace lookup is linear search, so the nodes
- * are not linked in any particular order.
+ * Note: Current namespace lookup is linear search. However, the
+ * nodes are linked in alphabetical order to 1) put all reserved
+ * names (start with underscore) first, and to 2) make a readable
+ * namespace dump.
*
******************************************************************************/
@@ -251,6 +307,10 @@ AcpiNsInstallNode (
{
UINT16 OwnerId = TABLE_ID_DSDT;
ACPI_NAMESPACE_NODE *ChildNode;
+#ifdef ACPI_ALPHABETIC_NAMESPACE
+
+ ACPI_NAMESPACE_NODE *PreviousChildNode;
+#endif
ACPI_FUNCTION_TRACE ("NsInstallNode");
@@ -272,9 +332,66 @@ AcpiNsInstallNode (
if (!ChildNode)
{
ParentNode->Child = Node;
+ Node->Flags |= ANOBJ_END_OF_PEER_LIST;
+ Node->Peer = ParentNode;
}
else
{
+#ifdef ACPI_ALPHABETIC_NAMESPACE
+ /*
+ * Walk the list whilst searching for the the correct
+ * alphabetic placement.
+ */
+ PreviousChildNode = NULL;
+ while (AcpiNsCompareNames (ChildNode->Name.Ascii, Node->Name.Ascii) < 0)
+ {
+ if (ChildNode->Flags & ANOBJ_END_OF_PEER_LIST)
+ {
+ /* Last peer; Clear end-of-list flag */
+
+ ChildNode->Flags &= ~ANOBJ_END_OF_PEER_LIST;
+
+ /* This node is the new peer to the child node */
+
+ ChildNode->Peer = Node;
+
+ /* This node is the new end-of-list */
+
+ Node->Flags |= ANOBJ_END_OF_PEER_LIST;
+ Node->Peer = ParentNode;
+ break;
+ }
+
+ /* Get next peer */
+
+ PreviousChildNode = ChildNode;
+ ChildNode = ChildNode->Peer;
+ }
+
+ /* Did the node get inserted at the end-of-list? */
+
+ if (!(Node->Flags & ANOBJ_END_OF_PEER_LIST))
+ {
+ /*
+ * Loop above terminated without reaching the end-of-list.
+ * Insert the new node at the current location
+ */
+ if (PreviousChildNode)
+ {
+ /* Insert node alphabetically */
+
+ Node->Peer = ChildNode;
+ PreviousChildNode->Peer = Node;
+ }
+ else
+ {
+ /* Insert node alphabetically at start of list */
+
+ Node->Peer = ChildNode;
+ ParentNode->Child = Node;
+ }
+ }
+#else
while (!(ChildNode->Flags & ANOBJ_END_OF_PEER_LIST))
{
ChildNode = ChildNode->Peer;
@@ -285,58 +402,19 @@ AcpiNsInstallNode (
/* Clear end-of-list flag */
ChildNode->Flags &= ~ANOBJ_END_OF_PEER_LIST;
+ Node->Flags |= ANOBJ_END_OF_PEER_LIST;
+ Node->Peer = ParentNode;
+#endif
}
/* Init the new entry */
- Node->OwnerId = OwnerId;
- Node->Flags |= ANOBJ_END_OF_PEER_LIST;
- Node->Peer = ParentNode;
-
-
- /*
- * If adding a name with unknown type, or having to
- * add the region in order to define fields in it, we
- * have a forward reference.
- */
- if ((ACPI_TYPE_ANY == Type) ||
- (INTERNAL_TYPE_FIELD_DEFN == Type) ||
- (INTERNAL_TYPE_BANK_FIELD_DEFN == Type))
- {
- /*
- * We don't want to abort here, however!
- * We will fill in the actual type when the
- * real definition is found later.
- */
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] is a forward reference\n",
- Node->Name.Ascii));
- }
-
- /*
- * The DefFieldDefn and BankFieldDefn cases are actually
- * looking up the Region in which the field will be defined
- */
- if ((INTERNAL_TYPE_FIELD_DEFN == Type) ||
- (INTERNAL_TYPE_BANK_FIELD_DEFN == Type))
- {
- Type = ACPI_TYPE_REGION;
- }
-
- /*
- * Scope, DefAny, and IndexFieldDefn are bogus "types" which do
- * not actually have anything to do with the type of the name
- * being looked up. Save any other value of Type as the type of
- * the entry.
- */
- if ((Type != INTERNAL_TYPE_SCOPE) &&
- (Type != INTERNAL_TYPE_DEF_ANY) &&
- (Type != INTERNAL_TYPE_INDEX_FIELD_DEFN))
- {
- Node->Type = (UINT8) Type;
- }
+ Node->OwnerId = OwnerId;
+ Node->Type = (UINT8) Type;
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s added to %p at %p\n",
- Node->Name.Ascii, ParentNode, Node));
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s (%s) added to %4.4s (%s) %p at %p\n",
+ Node->Name.Ascii, AcpiUtGetTypeName (Node->Type),
+ ParentNode->Name.Ascii, AcpiUtGetTypeName (ParentNode->Type), ParentNode, Node));
/*
* Increment the reference count(s) of all parents up to
diff --git a/sys/contrib/dev/acpica/nsdump.c b/sys/contrib/dev/acpica/nsdump.c
index 99e52c3..88b135c 100644
--- a/sys/contrib/dev/acpica/nsdump.c
+++ b/sys/contrib/dev/acpica/nsdump.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsdump - table dumping routines for debug
- * $Revision: 141 $
+ * $Revision: 146 $
*
*****************************************************************************/
@@ -248,22 +248,14 @@ AcpiNsDumpOneObject (
ACPI_OBJECT_TYPE ObjType;
ACPI_OBJECT_TYPE Type;
UINT32 BytesToDump;
- UINT32 DownstreamSiblingMask = 0;
- UINT32 LevelTmp;
- UINT32 WhichBit;
- UINT32 i;
UINT32 DbgLevel;
+ UINT32 i;
ACPI_FUNCTION_NAME ("NsDumpOneObject");
- ThisNode = AcpiNsMapHandleToNode (ObjHandle);
-
- LevelTmp = Level;
- Type = ThisNode->Type;
- WhichBit = 1;
-
+ /* Is output enabled? */
if (!(AcpiDbgLevel & Info->DebugLevel))
{
@@ -276,6 +268,9 @@ AcpiNsDumpOneObject (
return (AE_OK);
}
+ ThisNode = AcpiNsMapHandleToNode (ObjHandle);
+ Type = ThisNode->Type;
+
/* Check if the owner matches */
if ((Info->OwnerId != ACPI_UINT32_MAX) &&
@@ -286,56 +281,13 @@ AcpiNsDumpOneObject (
/* Indent the object according to the level */
- while (LevelTmp--)
- {
- /* Print appropriate characters to form tree structure */
-
- if (LevelTmp)
- {
- if (DownstreamSiblingMask & WhichBit)
- {
- AcpiOsPrintf ("|");
- }
- else
- {
- AcpiOsPrintf (" ");
- }
-
- WhichBit <<= 1;
- }
- else
- {
- if (AcpiNsExistDownstreamSibling (ThisNode + 1))
- {
- DownstreamSiblingMask |= ((UINT32) 1 << (Level - 1));
- AcpiOsPrintf ("+");
- }
- else
- {
- DownstreamSiblingMask &= ACPI_UINT32_MAX ^ ((UINT32) 1 << (Level - 1));
- AcpiOsPrintf ("+");
- }
-
- if (ThisNode->Child == NULL)
- {
- AcpiOsPrintf ("-");
- }
- else if (AcpiNsExistDownstreamSibling (ThisNode->Child))
- {
- AcpiOsPrintf ("+");
- }
- else
- {
- AcpiOsPrintf ("-");
- }
- }
- }
+ AcpiOsPrintf ("%2d%*s", (UINT32) Level - 1, (int) Level * 2, " ");
- /* Check the integrity of our data */
+ /* Check the node type and name */
- if (Type > INTERNAL_TYPE_MAX)
+ if (Type > ACPI_TYPE_LOCAL_MAX)
{
- Type = INTERNAL_TYPE_DEF_ANY; /* prints as *ERROR* */
+ ACPI_REPORT_WARNING (("Invalid ACPI Type %08X\n", Type));
}
if (!AcpiUtValidAcpiName (ThisNode->Name.Integer))
@@ -346,7 +298,7 @@ AcpiNsDumpOneObject (
/*
* Now we can print out the pertinent information
*/
- AcpiOsPrintf (" %4.4s %-12s %p",
+ AcpiOsPrintf ("%4.4s %-12s %p ",
ThisNode->Name.Ascii, AcpiUtGetTypeName (Type), ThisNode);
DbgLevel = AcpiDbgLevel;
@@ -370,7 +322,7 @@ AcpiNsDumpOneObject (
{
case ACPI_TYPE_PROCESSOR:
- AcpiOsPrintf (" ID %X Len %.4X Addr %p\n",
+ AcpiOsPrintf ("ID %X Len %.4X Addr %p\n",
ObjDesc->Processor.ProcId,
ObjDesc->Processor.Length,
(char *) ObjDesc->Processor.Address);
@@ -379,13 +331,13 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_DEVICE:
- AcpiOsPrintf (" Notification object: %p", ObjDesc);
+ AcpiOsPrintf ("Notify object: %p", ObjDesc);
break;
case ACPI_TYPE_METHOD:
- AcpiOsPrintf (" Args %X Len %.4X Aml %p\n",
+ AcpiOsPrintf ("Args %X Len %.4X Aml %p\n",
(UINT32) ObjDesc->Method.ParamCount,
ObjDesc->Method.AmlLength,
ObjDesc->Method.AmlStart);
@@ -394,7 +346,7 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_INTEGER:
- AcpiOsPrintf (" = %8.8X%8.8X\n",
+ AcpiOsPrintf ("= %8.8X%8.8X\n",
ACPI_HIDWORD (ObjDesc->Integer.Value),
ACPI_LODWORD (ObjDesc->Integer.Value));
break;
@@ -404,12 +356,12 @@ AcpiNsDumpOneObject (
if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)
{
- AcpiOsPrintf (" Elements %.2X\n",
+ AcpiOsPrintf ("Elements %.2X\n",
ObjDesc->Package.Count);
}
else
{
- AcpiOsPrintf (" [Length not yet evaluated]\n");
+ AcpiOsPrintf ("[Length not yet evaluated]\n");
}
break;
@@ -418,7 +370,7 @@ AcpiNsDumpOneObject (
if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)
{
- AcpiOsPrintf (" Len %.2X",
+ AcpiOsPrintf ("Len %.2X",
ObjDesc->Buffer.Length);
/* Dump some of the buffer */
@@ -435,30 +387,22 @@ AcpiNsDumpOneObject (
}
else
{
- AcpiOsPrintf (" [Length not yet evaluated]\n");
+ AcpiOsPrintf ("[Length not yet evaluated]\n");
}
break;
case ACPI_TYPE_STRING:
- AcpiOsPrintf (" Len %.2X", ObjDesc->String.Length);
-
- if (ObjDesc->String.Length > 0)
- {
- AcpiOsPrintf (" = \"%.32s\"", ObjDesc->String.Pointer);
- if (ObjDesc->String.Length > 32)
- {
- AcpiOsPrintf ("...");
- }
- }
+ AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length);
+ AcpiUtPrintString (ObjDesc->String.Pointer, 32);
AcpiOsPrintf ("\n");
break;
case ACPI_TYPE_REGION:
- AcpiOsPrintf (" [%s]", AcpiUtGetRegionName (ObjDesc->Region.SpaceId));
+ AcpiOsPrintf ("[%s]", AcpiUtGetRegionName (ObjDesc->Region.SpaceId));
if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)
{
AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n",
@@ -473,9 +417,9 @@ AcpiNsDumpOneObject (
break;
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
- AcpiOsPrintf (" [%s]\n",
+ AcpiOsPrintf ("[%s]\n",
AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode));
break;
@@ -485,43 +429,43 @@ AcpiNsDumpOneObject (
if (ObjDesc->BufferField.BufferObj &&
ObjDesc->BufferField.BufferObj->Buffer.Node)
{
- AcpiOsPrintf (" Buf [%4.4s]",
+ AcpiOsPrintf ("Buf [%4.4s]",
ObjDesc->BufferField.BufferObj->Buffer.Node->Name.Ascii);
}
break;
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
- AcpiOsPrintf (" Rgn [%4.4s]",
+ AcpiOsPrintf ("Rgn [%4.4s]",
ObjDesc->CommonField.RegionObj->Region.Node->Name.Ascii);
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
- AcpiOsPrintf (" Rgn [%4.4s] Bnk [%4.4s]",
+ AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]",
ObjDesc->CommonField.RegionObj->Region.Node->Name.Ascii,
ObjDesc->BankField.BankObj->CommonField.Node->Name.Ascii);
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
- AcpiOsPrintf (" Idx [%4.4s] Dat [%4.4s]",
+ AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]",
ObjDesc->IndexField.IndexObj->CommonField.Node->Name.Ascii,
ObjDesc->IndexField.DataObj->CommonField.Node->Name.Ascii);
break;
- case INTERNAL_TYPE_ALIAS:
+ case ACPI_TYPE_LOCAL_ALIAS:
- AcpiOsPrintf (" Target %4.4s (%p)\n", ((ACPI_NAMESPACE_NODE *) ObjDesc)->Name.Ascii, ObjDesc);
+ AcpiOsPrintf ("Target %4.4s (%p)\n", ((ACPI_NAMESPACE_NODE *) ObjDesc)->Name.Ascii, ObjDesc);
break;
default:
- AcpiOsPrintf (" Object %p\n", ObjDesc);
+ AcpiOsPrintf ("Object %p\n", ObjDesc);
break;
}
@@ -530,9 +474,10 @@ AcpiNsDumpOneObject (
switch (Type)
{
case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
+
AcpiOsPrintf (" Off %.2X Len %.2X Acc %.2hd\n",
(ObjDesc->CommonField.BaseByteOffset * 8)
+ ObjDesc->CommonField.StartFieldBitOffset,
@@ -548,9 +493,7 @@ AcpiNsDumpOneObject (
case ACPI_DISPLAY_OBJECTS:
- AcpiOsPrintf ("%p O:%p",
- ThisNode, ObjDesc);
-
+ AcpiOsPrintf ("O:%p", ObjDesc);
if (!ObjDesc)
{
/* No attached object, we are done */
@@ -622,7 +565,7 @@ AcpiNsDumpOneObject (
while (ObjDesc)
{
- ObjType = INTERNAL_TYPE_INVALID;
+ ObjType = ACPI_TYPE_INVALID;
AcpiOsPrintf (" Attached Object %p: ", ObjDesc);
/* Decode the type of attached object and dump the contents */
@@ -640,7 +583,7 @@ AcpiNsDumpOneObject (
ObjType = ACPI_GET_OBJECT_TYPE (ObjDesc);
- if (ObjType > INTERNAL_TYPE_MAX)
+ if (ObjType > ACPI_TYPE_LOCAL_MAX)
{
AcpiOsPrintf ("(Ptr to ACPI Object type %X [UNKNOWN])\n", ObjType);
BytesToDump = 32;
@@ -695,15 +638,15 @@ AcpiNsDumpOneObject (
ObjDesc = (void *) ObjDesc->Method.AmlStart;
break;
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
ObjDesc = (void *) ObjDesc->Field.RegionObj;
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
ObjDesc = (void *) ObjDesc->BankField.RegionObj;
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
ObjDesc = (void *) ObjDesc->IndexField.IndexObj;
break;
@@ -711,7 +654,7 @@ AcpiNsDumpOneObject (
goto Cleanup;
}
- ObjType = INTERNAL_TYPE_INVALID; /* Terminate loop after next pass */
+ ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */
}
Cleanup:
diff --git a/sys/contrib/dev/acpica/nseval.c b/sys/contrib/dev/acpica/nseval.c
index 043da21..be29617 100644
--- a/sys/contrib/dev/acpica/nseval.c
+++ b/sys/contrib/dev/acpica/nseval.c
@@ -2,7 +2,7 @@
*
* Module Name: nseval - Object evaluation interfaces -- includes control
* method lookup and execution.
- * $Revision: 118 $
+ * $Revision: 119 $
*
******************************************************************************/
@@ -495,7 +495,7 @@ AcpiNsExecuteControlMethod (
return_ACPI_STATUS (AE_NULL_OBJECT);
}
- ACPI_DUMP_PATHNAME (MethodNode, "NsExecuteControlMethod: Executing",
+ ACPI_DUMP_PATHNAME (MethodNode, "Execute Method:",
ACPI_LV_INFO, _COMPONENT);
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Method at AML address %p Length %X\n",
diff --git a/sys/contrib/dev/acpica/nsinit.c b/sys/contrib/dev/acpica/nsinit.c
index d1569ce..8babb3d 100644
--- a/sys/contrib/dev/acpica/nsinit.c
+++ b/sys/contrib/dev/acpica/nsinit.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsinit - namespace initialization
- * $Revision: 49 $
+ * $Revision: 50 $
*
*****************************************************************************/
@@ -419,7 +419,7 @@ AcpiNsInitOneDevice (
ACPI_FUNCTION_TRACE ("NsInitOneDevice");
- if (!(AcpiDbgLevel & ACPI_LV_INIT))
+ if ((AcpiDbgLevel <= ACPI_LV_ALL_EXCEPTIONS) && (!(AcpiDbgLevel & ACPI_LV_INFO)))
{
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "."));
}
diff --git a/sys/contrib/dev/acpica/nsobject.c b/sys/contrib/dev/acpica/nsobject.c
index acc5aba..ec30880 100644
--- a/sys/contrib/dev/acpica/nsobject.c
+++ b/sys/contrib/dev/acpica/nsobject.c
@@ -2,7 +2,7 @@
*
* Module Name: nsobject - Utilities for objects attached to namespace
* table entries
- * $Revision: 83 $
+ * $Revision: 85 $
*
******************************************************************************/
@@ -227,16 +227,9 @@ AcpiNsAttachObject (
{
ObjDesc = (ACPI_OPERAND_OBJECT *) Object;
- /* If a valid type (non-ANY) was given, just use it */
+ /* Use the given type */
- if (ACPI_TYPE_ANY != Type)
- {
- ObjectType = Type;
- }
- else
- {
- ObjectType = INTERNAL_TYPE_DEF_ANY;
- }
+ ObjectType = Type;
}
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n",
@@ -283,13 +276,13 @@ AcpiNsAttachObject (
*
* FUNCTION: AcpiNsDetachObject
*
- * PARAMETERS: Node - An object whose Value will be deleted
+ * PARAMETERS: Node - An node whose object will be detached
*
* RETURN: None.
*
- * DESCRIPTION: Delete the Value associated with a namespace object. If the
- * Value is an allocated object, it is freed. Otherwise, the
- * field is simply cleared.
+ * DESCRIPTION: Detach/delete an object associated with a namespace node.
+ * if the object is an allocated object, it is freed.
+ * Otherwise, the field is simply cleared.
*
******************************************************************************/
@@ -306,7 +299,7 @@ AcpiNsDetachObject (
ObjDesc = Node->Object;
if (!ObjDesc ||
- (ACPI_GET_OBJECT_TYPE (ObjDesc) == INTERNAL_TYPE_DATA))
+ (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA))
{
return_VOID;
}
@@ -318,7 +311,7 @@ AcpiNsDetachObject (
{
Node->Object = ObjDesc->Common.NextObject;
if (Node->Object &&
- (ACPI_GET_OBJECT_TYPE (Node->Object) != INTERNAL_TYPE_DATA))
+ (ACPI_GET_OBJECT_TYPE (Node->Object) != ACPI_TYPE_LOCAL_DATA))
{
Node->Object = Node->Object->Common.NextObject;
}
@@ -347,6 +340,8 @@ AcpiNsDetachObject (
* RETURN: Current value of the object field from the Node whose
* handle is passed
*
+ * DESCRIPTION: Obtain the object attached to a namespace node.
+ *
******************************************************************************/
ACPI_OPERAND_OBJECT *
@@ -365,7 +360,7 @@ AcpiNsGetAttachedObject (
if (!Node->Object ||
((ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_OPERAND) &&
(ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_NAMED)) ||
- (ACPI_GET_OBJECT_TYPE (Node->Object) == INTERNAL_TYPE_DATA))
+ (ACPI_GET_OBJECT_TYPE (Node->Object) == ACPI_TYPE_LOCAL_DATA))
{
return_PTR (NULL);
}
@@ -381,7 +376,9 @@ AcpiNsGetAttachedObject (
* PARAMETERS: Node - Parent Node to be examined
*
* RETURN: Current value of the object field from the Node whose
- * handle is passed
+ * handle is passed.
+ *
+ * DESCRIPTION: Obtain a secondary object associated with a namespace node.
*
******************************************************************************/
@@ -392,10 +389,10 @@ AcpiNsGetSecondaryObject (
ACPI_FUNCTION_TRACE_PTR ("NsGetSecondaryObject", ObjDesc);
- if ((!ObjDesc) ||
- (ACPI_GET_OBJECT_TYPE (ObjDesc) == INTERNAL_TYPE_DATA) ||
- (!ObjDesc->Common.NextObject) ||
- (ACPI_GET_OBJECT_TYPE (ObjDesc->Common.NextObject) == INTERNAL_TYPE_DATA))
+ if ((!ObjDesc) ||
+ (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) ||
+ (!ObjDesc->Common.NextObject) ||
+ (ACPI_GET_OBJECT_TYPE (ObjDesc->Common.NextObject) == ACPI_TYPE_LOCAL_DATA))
{
return_PTR (NULL);
}
@@ -408,11 +405,13 @@ AcpiNsGetSecondaryObject (
*
* FUNCTION: AcpiNsAttachData
*
- * PARAMETERS:
+ * PARAMETERS: Node - Namespace node
+ * Handler - Handler to be associated with the data
+ * Data - Data to be attached
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Low-level attach data. Create and attach a Data object.
*
******************************************************************************/
@@ -427,12 +426,13 @@ AcpiNsAttachData (
ACPI_OPERAND_OBJECT *DataDesc;
- /* */
+ /* We only allow one attachment per handler */
+
PrevObjDesc = NULL;
ObjDesc = Node->Object;
while (ObjDesc)
{
- if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == INTERNAL_TYPE_DATA) &&
+ if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) &&
(ObjDesc->Data.Handler == Handler))
{
return (AE_ALREADY_EXISTS);
@@ -442,10 +442,9 @@ AcpiNsAttachData (
ObjDesc = ObjDesc->Common.NextObject;
}
-
/* Create an internal object for the data */
- DataDesc = AcpiUtCreateInternalObject (INTERNAL_TYPE_DATA);
+ DataDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_DATA);
if (!DataDesc)
{
return (AE_NO_MEMORY);
@@ -454,7 +453,6 @@ AcpiNsAttachData (
DataDesc->Data.Handler = Handler;
DataDesc->Data.Pointer = Data;
-
/* Install the data object */
if (PrevObjDesc)
@@ -474,11 +472,13 @@ AcpiNsAttachData (
*
* FUNCTION: AcpiNsDetachData
*
- * PARAMETERS:
+ * PARAMETERS: Node - Namespace node
+ * Handler - Handler associated with the data
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Low-level detach data. Delete the data node, but the caller
+ * is responsible for the actual data.
*
******************************************************************************/
@@ -495,7 +495,7 @@ AcpiNsDetachData (
ObjDesc = Node->Object;
while (ObjDesc)
{
- if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == INTERNAL_TYPE_DATA) &&
+ if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) &&
(ObjDesc->Data.Handler == Handler))
{
if (PrevObjDesc)
@@ -523,11 +523,14 @@ AcpiNsDetachData (
*
* FUNCTION: AcpiNsGetAttachedData
*
- * PARAMETERS:
+ * PARAMETERS: Node - Namespace node
+ * Handler - Handler associated with the data
+ * Data - Where the data is returned
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Low level interface to obtain data previously associated with
+ * a namespace node.
*
******************************************************************************/
@@ -543,7 +546,7 @@ AcpiNsGetAttachedData (
ObjDesc = Node->Object;
while (ObjDesc)
{
- if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == INTERNAL_TYPE_DATA) &&
+ if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) &&
(ObjDesc->Data.Handler == Handler))
{
*Data = ObjDesc->Data.Pointer;
diff --git a/sys/contrib/dev/acpica/nssearch.c b/sys/contrib/dev/acpica/nssearch.c
index b0add89..4b7819d 100644
--- a/sys/contrib/dev/acpica/nssearch.c
+++ b/sys/contrib/dev/acpica/nssearch.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nssearch - Namespace search
- * $Revision: 89 $
+ * $Revision: 92 $
*
******************************************************************************/
@@ -129,14 +129,15 @@
* FUNCTION: AcpiNsSearchNode
*
* PARAMETERS: *TargetName - Ascii ACPI name to search for
- * *Node - Starting table where search will begin
+ * *Node - Starting node where search will begin
* Type - Object type to match
* **ReturnNode - Where the matched Named obj is returned
*
* RETURN: Status
*
- * DESCRIPTION: Search a single namespace table. Performs a simple search,
- * does not add entries or search parents.
+ * DESCRIPTION: Search a single level of the namespace. Performs a
+ * simple search of the specified level, and does not add
+ * entries or search parents.
*
*
* Named object lists are built (and subsequently dumped) in the
@@ -171,7 +172,7 @@ AcpiNsSearchNode (
ScopeName = AcpiNsGetExternalPathname (Node);
if (ScopeName)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (type %s)\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (%s)\n",
ScopeName, Node, (char *) &TargetName, AcpiUtGetTypeName (Type)));
ACPI_MEM_FREE (ScopeName);
@@ -180,8 +181,8 @@ AcpiNsSearchNode (
#endif
/*
- * Search for name in this table, which is to say that we must search
- * for the name among the children of this object
+ * Search for name at this namespace level, which is to say that we
+ * must search for the name among the children of this object
*/
NextNode = Node->Child;
while (NextNode)
@@ -191,32 +192,8 @@ AcpiNsSearchNode (
if (NextNode->Name.Integer == TargetName)
{
/*
- * Found matching entry. Capture the type if appropriate, before
- * returning the entry.
- *
- * The DefFieldDefn and BankFieldDefn cases are actually looking up
- * the Region in which the field will be defined
+ * Found matching entry.
*/
- if ((INTERNAL_TYPE_FIELD_DEFN == Type) ||
- (INTERNAL_TYPE_BANK_FIELD_DEFN == Type))
- {
- Type = ACPI_TYPE_REGION;
- }
-
- /*
- * Scope, DefAny, and IndexFieldDefn are bogus "types" which do not
- * actually have anything to do with the type of the name being
- * looked up. For any other value of Type, if the type stored in
- * the entry is Any (i.e. unknown), save the actual type.
- */
- if (Type != INTERNAL_TYPE_SCOPE &&
- Type != INTERNAL_TYPE_DEF_ANY &&
- Type != INTERNAL_TYPE_INDEX_FIELD_DEFN &&
- NextNode->Type == ACPI_TYPE_ANY)
- {
- NextNode->Type = (UINT8) Type;
- }
-
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Name %4.4s Type [%s] found at %p\n",
(char *) &TargetName, AcpiUtGetTypeName (NextNode->Type), NextNode));
@@ -241,7 +218,7 @@ AcpiNsSearchNode (
NextNode = NextNode->Peer;
}
- /* Searched entire table, not found */
+ /* Searched entire namespace level, not found */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name %4.4s Type [%s] not found at %p\n",
(char *) &TargetName, AcpiUtGetTypeName (Type), NextNode));
@@ -255,14 +232,14 @@ AcpiNsSearchNode (
* FUNCTION: AcpiNsSearchParentTree
*
* PARAMETERS: *TargetName - Ascii ACPI name to search for
- * *Node - Starting table where search will begin
+ * *Node - Starting node where search will begin
* Type - Object type to match
* **ReturnNode - Where the matched Named Obj is returned
*
* RETURN: Status
*
* DESCRIPTION: Called when a name has not been found in the current namespace
- * table. Before adding it or giving up, ACPI scope rules require
+ * level. Before adding it or giving up, ACPI scope rules require
* searching enclosing scopes in cases identified by AcpiNsLocal().
*
* "A name is located by finding the matching name in the current
@@ -292,25 +269,21 @@ AcpiNsSearchParentTree (
ParentNode = AcpiNsGetParentNode (Node);
/*
- * If there is no parent (at the root) or type is "local", we won't be
- * searching the parent tree.
+ * If there is no parent (i.e., we are at the root) or
+ * type is "local", we won't be searching the parent tree.
*/
- if ((AcpiNsLocal (Type)) ||
- (!ParentNode))
+ if (!ParentNode)
{
- if (!ParentNode)
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n",
- (char *) &TargetName));
- }
-
- if (AcpiNsLocal (Type))
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
- "[%4.4s] type [%s] must be local to this scope (no parent search)\n",
- (char *) &TargetName, AcpiUtGetTypeName (Type)));
- }
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n",
+ (char *) &TargetName));
+ return_ACPI_STATUS (AE_NOT_FOUND);
+ }
+ if (AcpiNsLocal (Type))
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
+ "[%4.4s] type [%s] must be local to this scope (no parent search)\n",
+ (char *) &TargetName, AcpiUtGetTypeName (Type)));
return_ACPI_STATUS (AE_NOT_FOUND);
}
@@ -355,8 +328,8 @@ AcpiNsSearchParentTree (
*
* PARAMETERS: TargetName - Ascii ACPI name to search for (4 chars)
* WalkState - Current state of the walk
- * *Node - Starting table where search will begin
- * InterpreterMode - Add names only in MODE_LoadPassX.
+ * *Node - Starting node where search will begin
+ * InterpreterMode - Add names only in ACPI_MODE_LOAD_PASS_x.
* Otherwise,search only.
* Type - Object type to match
* Flags - Flags describing the search restrictions
@@ -364,12 +337,12 @@ AcpiNsSearchParentTree (
*
* RETURN: Status
*
- * DESCRIPTION: Search for a name segment in a single name table,
+ * DESCRIPTION: Search for a name segment in a single namespace level,
* optionally adding it if it is not found. If the passed
* Type is not Any and the type previously stored in the
* entry was Any (i.e. unknown), update the stored type.
*
- * In IMODE_EXECUTE, search only.
+ * In ACPI_IMODE_EXECUTE, search only.
* In other modes, search and add if not found.
*
******************************************************************************/
@@ -406,14 +379,12 @@ AcpiNsSearchAndEnter (
if (!AcpiUtValidAcpiName (TargetName))
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "*** Bad character in name: %08x *** \n",
+ ACPI_REPORT_ERROR (("NsSearchAndEnter: Bad character in ACPI Name: %X\n",
TargetName));
-
- ACPI_REPORT_ERROR (("NsSearchAndEnter: Bad character in ACPI Name\n"));
return_ACPI_STATUS (AE_BAD_CHARACTER);
}
- /* Try to find the name in the table specified by the caller */
+ /* Try to find the name in the namespace level specified by the caller */
*ReturnNode = ACPI_ENTRY_NOT_FOUND;
Status = AcpiNsSearchNode (TargetName, Node, Type, ReturnNode);
@@ -449,7 +420,7 @@ AcpiNsSearchAndEnter (
(Flags & ACPI_NS_SEARCH_PARENT))
{
/*
- * Not found in table - search parent tree according
+ * Not found at this level - search parent tree according
* to ACPI specification
*/
Status = AcpiNsSearchParentTree (TargetName, Node,
diff --git a/sys/contrib/dev/acpica/nsutils.c b/sys/contrib/dev/acpica/nsutils.c
index 6e87aba..69ed423 100644
--- a/sys/contrib/dev/acpica/nsutils.c
+++ b/sys/contrib/dev/acpica/nsutils.c
@@ -2,7 +2,7 @@
*
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
* parents and siblings and Scope manipulation
- * $Revision: 113 $
+ * $Revision: 116 $
*
*****************************************************************************/
@@ -137,7 +137,7 @@
*
* RETURN: None
*
- * DESCRIPTION: Print warning message
+ * DESCRIPTION: Print warning message with full pathname
*
******************************************************************************/
@@ -153,12 +153,16 @@ AcpiNsReportError (
char *Name;
+ /* Convert path to external format */
+
Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, InternalName, NULL, &Name);
AcpiOsPrintf ("%8s-%04d: *** Error: Looking up ",
ModuleName, LineNumber);
- if (Name)
+ /* Print target name */
+
+ if (ACPI_SUCCESS (Status))
{
AcpiOsPrintf ("[%s]", Name);
}
@@ -889,7 +893,7 @@ UINT32
AcpiNsOpensScope (
ACPI_OBJECT_TYPE Type)
{
- ACPI_FUNCTION_TRACE_U32 ("NsOpensScope", Type);
+ ACPI_FUNCTION_TRACE_STR ("NsOpensScope", AcpiUtGetTypeName (Type));
if (!AcpiUtValidObjectType (Type))
@@ -1035,45 +1039,6 @@ AcpiNsFindParentName (
}
-#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiNsExistDownstreamSibling
- *
- * PARAMETERS: *Node - pointer to first Node to examine
- *
- * RETURN: TRUE if sibling is found, FALSE otherwise
- *
- * DESCRIPTION: Searches remainder of scope being processed to determine
- * whether there is a downstream sibling to the current
- * object. This function is used to determine what type of
- * line drawing character to use when displaying namespace
- * trees.
- *
- ******************************************************************************/
-
-BOOLEAN
-AcpiNsExistDownstreamSibling (
- ACPI_NAMESPACE_NODE *Node)
-{
-
- if (!Node)
- {
- return (FALSE);
- }
-
- if (Node->Name.Integer)
- {
- return (TRUE);
- }
-
- return (FALSE);
-}
-
-#endif /* ACPI_DEBUG_OUTPUT */
-
-
/*******************************************************************************
*
* FUNCTION: AcpiNsGetParentNode
diff --git a/sys/contrib/dev/acpica/nsxfeval.c b/sys/contrib/dev/acpica/nsxfeval.c
index 1349eda..1926011 100644
--- a/sys/contrib/dev/acpica/nsxfeval.c
+++ b/sys/contrib/dev/acpica/nsxfeval.c
@@ -2,7 +2,7 @@
*
* Module Name: nsxfeval - Public interfaces to the ACPI subsystem
* ACPI Object evaluation interfaces
- * $Revision: 2 $
+ * $Revision: 4 $
*
******************************************************************************/
@@ -494,8 +494,8 @@ AcpiWalkNamespace (
/* Parameter validation */
- if ((Type > ACPI_TYPE_MAX) ||
- (!MaxDepth) ||
+ if ((Type > ACPI_TYPE_EXTERNAL_MAX) ||
+ (!MaxDepth) ||
(!UserFunction))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
@@ -707,11 +707,13 @@ AcpiGetDevices (
*
* FUNCTION: AcpiAttachData
*
- * PARAMETERS:
+ * PARAMETERS: ObjHandle - Namespace node
+ * Handler - Handler for this attachment
+ * Data - Pointer to data to be attached
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Attach arbitrary data and handler to a namespace node.
*
******************************************************************************/
@@ -761,11 +763,12 @@ UnlockAndExit:
*
* FUNCTION: AcpiDetachData
*
- * PARAMETERS:
+ * PARAMETERS: ObjHandle - Namespace node handle
+ * Handler - Handler used in call to AcpiAttachData
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Remove data that was previously attached to a node.
*
******************************************************************************/
@@ -813,11 +816,13 @@ UnlockAndExit:
*
* FUNCTION: AcpiGetData
*
- * PARAMETERS:
+ * PARAMETERS: ObjHandle - Namespace node
+ * Handler - Handler used in call to AttachData
+ * Data - Where the data is returned
*
* RETURN: Status
*
- * DESCRIPTION:
+ * DESCRIPTION: Retrieve data that was previously attached to a namespace node.
*
******************************************************************************/
diff --git a/sys/contrib/dev/acpica/nsxfobj.c b/sys/contrib/dev/acpica/nsxfobj.c
index baa72a9..b6fe807 100644
--- a/sys/contrib/dev/acpica/nsxfobj.c
+++ b/sys/contrib/dev/acpica/nsxfobj.c
@@ -2,7 +2,7 @@
*
* Module Name: nsxfobj - Public interfaces to the ACPI subsystem
* ACPI Object oriented interfaces
- * $Revision: 113 $
+ * $Revision: 114 $
*
******************************************************************************/
@@ -290,7 +290,7 @@ AcpiGetNextObject (
/* Parameter validation */
- if (Type > ACPI_TYPE_MAX)
+ if (Type > ACPI_TYPE_EXTERNAL_MAX)
{
return (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/psargs.c b/sys/contrib/dev/acpica/psargs.c
index e1e5346..1b9e1a4 100644
--- a/sys/contrib/dev/acpica/psargs.c
+++ b/sys/contrib/dev/acpica/psargs.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psargs - Parse AML opcode arguments
- * $Revision: 64 $
+ * $Revision: 65 $
*
*****************************************************************************/
@@ -188,6 +188,7 @@ AcpiPsGetNextPackageLength (
break;
default:
+
/* Can't get here, only 2 bits / 4 cases */
break;
}
@@ -220,6 +221,8 @@ AcpiPsGetNextPackageEnd (
ACPI_FUNCTION_TRACE ("PsGetNextPackageEnd");
+ /* Function below changes ParserState->Aml */
+
Length = (NATIVE_UINT) AcpiPsGetNextPackageLength (ParserState);
return_PTR (Start + Length); /* end of package */
@@ -280,21 +283,21 @@ AcpiPsGetNextNamestring (
/* Two name segments */
- End += 9;
+ End += 1 + (2 * ACPI_NAME_SIZE);
break;
case AML_MULTI_NAME_PREFIX_OP:
/* Multiple name segments, 4 chars each */
- End += 2 + ((ACPI_SIZE) ACPI_GET8 (End + 1) * 4);
+ End += 2 + ((ACPI_SIZE) ACPI_GET8 (End + 1) * ACPI_NAME_SIZE);
break;
default:
/* Single name segment */
- End += 4;
+ End += ACPI_NAME_SIZE;
break;
}
@@ -311,8 +314,8 @@ AcpiPsGetNextNamestring (
* Arg - Where the namepath will be stored
* ArgCount - If the namepath points to a control method
* the method's argument is returned here.
- * MethodCall - Whether the namepath can be the start
- * of a method call
+ * MethodCall - Whether the namepath can possibly be the
+ * start of a method call
*
* RETURN: Status
*
@@ -326,9 +329,9 @@ AcpiPsGetNextNamestring (
ACPI_STATUS
AcpiPsGetNextNamepath (
+ ACPI_WALK_STATE *WalkState,
ACPI_PARSE_STATE *ParserState,
ACPI_PARSE_OBJECT *Arg,
- UINT32 *ArgCount,
BOOLEAN MethodCall)
{
NATIVE_CHAR *Path;
@@ -365,14 +368,17 @@ AcpiPsGetNextNamepath (
* object (MUST BE mode EXECUTE to perform upsearch)
*/
Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
- ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL,
- &Node);
+ ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node);
if (ACPI_SUCCESS (Status) && MethodCall)
{
if (Node->Type == ACPI_TYPE_METHOD)
{
+ /*
+ * This name is actually a control method invocation
+ */
MethodDesc = AcpiNsGetAttachedObject (Node);
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Desc %p Path=%p\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
+ "Control Method - %p Desc %p Path=%p\n",
Node, MethodDesc, Path));
NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP);
@@ -384,7 +390,6 @@ AcpiPsGetNextNamepath (
/* Change arg into a METHOD CALL and attach name to it */
AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP);
-
NameOp->Common.Value.Name = Path;
/* Point METHODCALL/NAME to the METHOD Node */
@@ -394,15 +399,19 @@ AcpiPsGetNextNamepath (
if (!MethodDesc)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p has no attached object\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
+ "Control Method - %p has no attached object\n",
Node));
return_ACPI_STATUS (AE_AML_INTERNAL);
}
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Args %X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
+ "Control Method - %p Args %X\n",
Node, MethodDesc->Method.ParamCount));
- *ArgCount = MethodDesc->Method.ParamCount;
+ /* Get the number of arguments to expect */
+
+ WalkState->ArgCount = MethodDesc->Method.ParamCount;
return_ACPI_STATUS (AE_OK);
}
@@ -412,6 +421,32 @@ AcpiPsGetNextNamepath (
* (See code below)
*/
}
+
+ if (ACPI_FAILURE (Status))
+ {
+ /*
+ * 1) Any error other than NOT_FOUND is always severe
+ * 2) NOT_FOUND is only important if we are executing a method.
+ * 3) If executing a CondRefOf opcode, NOT_FOUND is ok.
+ */
+ if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) &&
+ (Status == AE_NOT_FOUND) &&
+ (WalkState->Op->Common.AmlOpcode != AML_COND_REF_OF_OP)) ||
+
+ (Status != AE_NOT_FOUND))
+ {
+ ACPI_REPORT_NSERROR (Path, Status);
+ }
+ else
+ {
+ /*
+ * We got a NOT_FOUND during table load or we encountered
+ * a CondRefOf(x) where the target does not exist.
+ * -- either case is ok
+ */
+ Status = AE_OK;
+ }
+ }
}
/*
@@ -514,6 +549,7 @@ AcpiPsGetNextSimpleArg (
default:
+
ACPI_REPORT_ERROR (("Invalid ArgType %X\n", ArgType));
break;
}
@@ -539,7 +575,7 @@ AcpiPsGetNextField (
ACPI_PARSE_STATE *ParserState)
{
UINT32 AmlOffset = ACPI_PTR_DIFF (ParserState->Aml,
- ParserState->AmlStart);
+ ParserState->AmlStart);
ACPI_PARSE_OBJECT *Field;
UINT16 Opcode;
UINT32 Name;
@@ -591,7 +627,7 @@ AcpiPsGetNextField (
ACPI_MOVE_UNALIGNED32_TO_32 (&Name, ParserState->Aml);
AcpiPsSetName (Field, Name);
- ParserState->Aml += 4;
+ ParserState->Aml += ACPI_NAME_SIZE;
/* Get the length which is encoded as a package length */
@@ -620,6 +656,7 @@ AcpiPsGetNextField (
break;
default:
+
/* Opcode was set in previous switch */
break;
}
@@ -646,9 +683,9 @@ AcpiPsGetNextField (
ACPI_STATUS
AcpiPsGetNextArg (
+ ACPI_WALK_STATE *WalkState,
ACPI_PARSE_STATE *ParserState,
UINT32 ArgType,
- UINT32 *ArgCount,
ACPI_PARSE_OBJECT **ReturnArg)
{
ACPI_PARSE_OBJECT *Arg = NULL;
@@ -736,7 +773,8 @@ AcpiPsGetNextArg (
/* Fill in bytelist data */
- Arg->Common.Value.Size = ACPI_PTR_DIFF (ParserState->PkgEnd, ParserState->Aml);
+ Arg->Common.Value.Size = ACPI_PTR_DIFF (ParserState->PkgEnd,
+ ParserState->Aml);
Arg->Named.Data = ParserState->Aml;
/* Skip to End of byte data */
@@ -763,13 +801,13 @@ AcpiPsGetNextArg (
return_ACPI_STATUS (AE_NO_MEMORY);
}
- Status = AcpiPsGetNextNamepath (ParserState, Arg, ArgCount, 0);
+ Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 0);
}
else
{
/* single complex argument, nothing returned */
- *ArgCount = 1;
+ WalkState->ArgCount = 1;
}
break;
@@ -779,7 +817,7 @@ AcpiPsGetNextArg (
/* single complex argument, nothing returned */
- *ArgCount = 1;
+ WalkState->ArgCount = 1;
break;
@@ -791,7 +829,7 @@ AcpiPsGetNextArg (
{
/* non-empty list of variable arguments, nothing returned */
- *ArgCount = ACPI_VAR_ARGS;
+ WalkState->ArgCount = ACPI_VAR_ARGS;
}
break;
diff --git a/sys/contrib/dev/acpica/psopcode.c b/sys/contrib/dev/acpica/psopcode.c
index 270c743..ab2f137 100644
--- a/sys/contrib/dev/acpica/psopcode.c
+++ b/sys/contrib/dev/acpica/psopcode.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psopcode - Parser/Interpreter opcode information table
- * $Revision: 72 $
+ * $Revision: 73 $
*
*****************************************************************************/
@@ -542,144 +542,144 @@
const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] =
{
/*! [Begin] no source code translation */
-/* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */
-
-/* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
-/* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
-/* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, INTERNAL_TYPE_ALIAS, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
-/* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
-/* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
-/* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
-/* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, INTERNAL_TYPE_SCOPE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, ACPI_TYPE_BUFFER, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
-/* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
-/* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
-/* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
-/* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 1A */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
-/* 1B */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
-/* 1C */ ACPI_OP ("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
-/* 1D */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 1E */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
-/* 1F */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
-/* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
-/* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_2T_1R, AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT),
-/* 24 */ ACPI_OP ("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 25 */ ACPI_OP ("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 2A */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
-/* 2B */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 2C */ ACPI_OP ("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 2D */ ACPI_OP ("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 2E */ ACPI_OP ("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
-/* 2F */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R),
-/* 30 */ ACPI_OP ("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
-/* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
-/* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT),
-/* 33 */ ACPI_OP ("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
-/* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
-/* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
-/* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
-/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
-/* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
-/* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
-/* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
-/* 3B */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
-/* 3C */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
-/* 3D */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
-/* 3E */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
-/* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
-/* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
-/* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
-/* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
-/* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
-/* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
-/* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
+/* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */
+
+/* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
+/* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
+/* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, ACPI_TYPE_LOCAL_ALIAS, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
+/* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
+/* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
+/* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
+/* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_LOCAL_SCOPE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, ACPI_TYPE_BUFFER, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
+/* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),
+/* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
+/* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 1A */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 1B */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 1C */ ACPI_OP ("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 1D */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 1E */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
+/* 1F */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
+/* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
+/* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_2T_1R, AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT),
+/* 24 */ ACPI_OP ("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 25 */ ACPI_OP ("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 2A */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),
+/* 2B */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 2C */ ACPI_OP ("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 2D */ ACPI_OP ("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 2E */ ACPI_OP ("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 2F */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R),
+/* 30 */ ACPI_OP ("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
+/* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT),
+/* 33 */ ACPI_OP ("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
+/* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
+/* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),
+/* 3B */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
+/* 3C */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
+/* 3D */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),
+/* 3E */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
/* Prefixed opcodes (Two-byte opcodes with a prefix op) */
-/* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
-/* 48 */ ACPI_OP ("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
-/* 49 */ ACPI_OP ("CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE),
-/* 4A */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R, AML_FLAGS_EXEC_1A_1T_0R),
-/* 4B */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
-/* 4C */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
-/* 4D */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
-/* 4E */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
-/* 4F */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
-/* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
-/* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
-/* 52 */ ACPI_OP ("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 53 */ ACPI_OP ("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
-/* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
-/* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
-/* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R),
-/* 58 */ ACPI_OP ("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
-/* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, INTERNAL_TYPE_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
-/* 5A */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, INTERNAL_TYPE_INDEX_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
-/* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, INTERNAL_TYPE_BANK_FIELD_DEFN,AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
+/* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
+/* 48 */ ACPI_OP ("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 49 */ ACPI_OP ("CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE),
+/* 4A */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R, AML_FLAGS_EXEC_1A_1T_0R),
+/* 4B */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 4C */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 4D */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
+/* 4E */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 4F */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
+/* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 52 */ ACPI_OP ("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 53 */ ACPI_OP ("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
+/* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
+/* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R),
+/* 58 */ ACPI_OP ("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
+/* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
+/* 5A */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
+/* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
/* Internal opcodes that map to invalid AML opcodes */
-/* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
-/* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
-/* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
-/* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ),
-/* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE),
-/* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
-/* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
-/* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
-/* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
-/* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
-/* 6A */ ACPI_OP ("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL),
-/* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, INTERNAL_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),
-/* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),
-/* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
+/* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
+/* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
+/* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ),
+/* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE),
+/* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
+/* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
+/* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
+/* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
+/* 6A */ ACPI_OP ("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL),
+/* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),
/* ACPI 2.0 opcodes */
-/* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
-/* 6F */ ACPI_OP ("Package /*Var*/", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER),
-/* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
-/* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
-/* 72 */ ACPI_OP ("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
-/* 73 */ ACPI_OP ("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 74 */ ACPI_OP ("ToDecimalString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 75 */ ACPI_OP ("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 76 */ ACPI_OP ("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
-/* 77 */ ACPI_OP ("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
-/* 78 */ ACPI_OP ("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
-/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT),
-/* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
-/* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
-/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
-/* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP, INTERNAL_TYPE_SCOPE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE)
+/* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
+/* 6F */ ACPI_OP ("Package /*Var*/", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER),
+/* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
+/* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
+/* 72 */ ACPI_OP ("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 73 */ ACPI_OP ("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 74 */ ACPI_OP ("ToDecimalString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 75 */ ACPI_OP ("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 76 */ ACPI_OP ("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),
+/* 77 */ ACPI_OP ("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
+/* 78 */ ACPI_OP ("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT),
+/* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
+/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE)
/*! [End] no source code translation !*/
};
diff --git a/sys/contrib/dev/acpica/psparse.c b/sys/contrib/dev/acpica/psparse.c
index 8d4606d..a5d24ca 100644
--- a/sys/contrib/dev/acpica/psparse.c
+++ b/sys/contrib/dev/acpica/psparse.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psparse - Parser top level AML parse routines
- * $Revision: 133 $
+ * $Revision: 135 $
*
*****************************************************************************/
@@ -580,7 +580,8 @@ AcpiPsParseLoop (
Status = AcpiPsNextParseState (WalkState, Op, Status);
}
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op));
}
else if (WalkState->PrevOp)
@@ -603,7 +604,8 @@ AcpiPsParseLoop (
{
/* Get the next opcode from the AML stream */
- WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, ParserState->AmlStart);
+ WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml,
+ ParserState->AmlStart);
WalkState->Opcode = AcpiPsPeekOpcode (ParserState);
/*
@@ -663,9 +665,8 @@ AcpiPsParseLoop (
while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) &&
(GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME))
{
- Status = AcpiPsGetNextArg (ParserState,
- GET_CURRENT_ARG_TYPE (WalkState->ArgTypes),
- &WalkState->ArgCount, &Arg);
+ Status = AcpiPsGetNextArg (WalkState, ParserState,
+ GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg);
if (ACPI_FAILURE (Status))
{
goto CloseThisOp;
@@ -726,7 +727,7 @@ AcpiPsParseLoop (
* Defer final parsing of an OperationRegion body,
* because we don't have enough info in the first pass
* to parse it correctly (i.e., there may be method
- * calls within the TermArg elements of the body.
+ * calls within the TermArg elements of the body.)
*
* However, we must continue parsing because
* the opregion is not a standalone package --
@@ -815,22 +816,15 @@ AcpiPsParseLoop (
/* Fill in constant or string argument directly */
AcpiPsGetNextSimpleArg (ParserState,
- GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), Op);
+ GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), Op);
break;
case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */
- Status = AcpiPsGetNextNamepath (ParserState, Op, &WalkState->ArgCount, 1);
+ Status = AcpiPsGetNextNamepath (WalkState, ParserState, Op, 1);
if (ACPI_FAILURE (Status))
{
- /* NOT_FOUND is an error only if we are actually executing a method */
-
- if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) &&
- (Status == AE_NOT_FOUND)) ||
- (Status != AE_NOT_FOUND))
- {
- goto CloseThisOp;
- }
+ goto CloseThisOp;
}
WalkState->ArgTypes = 0;
@@ -841,24 +835,16 @@ AcpiPsParseLoop (
/* Op is not a constant or string, append each argument */
- while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount)
+ while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) &&
+ !WalkState->ArgCount)
{
WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml,
ParserState->AmlStart);
- Status = AcpiPsGetNextArg (ParserState,
- GET_CURRENT_ARG_TYPE (WalkState->ArgTypes),
- &WalkState->ArgCount, &Arg);
+ Status = AcpiPsGetNextArg (WalkState, ParserState,
+ GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg);
if (ACPI_FAILURE (Status))
{
- /* NOT_FOUND is an error only if we are actually executing a method */
-
- if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) &&
- (Status == AE_NOT_FOUND) &&
- (Op->Common.AmlOpcode != AML_COND_REF_OF_OP)) ||
- (Status != AE_NOT_FOUND))
- {
- goto CloseThisOp;
- }
+ goto CloseThisOp;
}
if (Arg)
@@ -936,7 +922,8 @@ AcpiPsParseLoop (
{
/* There are arguments (complex ones), push Op and prepare for argument */
- Status = AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount);
+ Status = AcpiPsPushScope (ParserState, Op,
+ WalkState->ArgTypes, WalkState->ArgCount);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
@@ -1026,7 +1013,8 @@ CloseThisOp:
case AE_CTRL_END:
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
if (Op)
{
@@ -1051,7 +1039,8 @@ CloseThisOp:
while (!Op || (Op->Common.AmlOpcode != AML_WHILE_OP))
{
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
}
/* Close this iteration of the While loop */
@@ -1081,7 +1070,8 @@ CloseThisOp:
{
AcpiPsCompleteThisOp (WalkState, Op);
}
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
} while (Op);
@@ -1096,7 +1086,8 @@ CloseThisOp:
{
AcpiPsCompleteThisOp (WalkState, Op);
}
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
} while (Op);
@@ -1107,7 +1098,8 @@ CloseThisOp:
#if 0
if (Op == NULL)
{
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
}
#endif
WalkState->PrevOp = Op;
@@ -1119,7 +1111,8 @@ CloseThisOp:
if (AcpiPsHasCompletedScope (ParserState))
{
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op));
}
else
@@ -1167,7 +1160,8 @@ CloseThisOp:
AcpiPsCompleteThisOp (WalkState, Op);
}
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op,
+ &WalkState->ArgTypes, &WalkState->ArgCount);
} while (Op);
@@ -1184,7 +1178,8 @@ CloseThisOp:
AcpiPsCompleteThisOp (WalkState, Op);
}
- AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
+ AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes,
+ &WalkState->ArgCount);
} while (Op);
@@ -1261,7 +1256,8 @@ AcpiPsParseAml (
}
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
- "Completed one call to walk loop, State=%p\n", WalkState));
+ "Completed one call to walk loop, %s State=%p\n",
+ AcpiFormatException (Status), WalkState));
if (Status == AE_CTRL_TRANSFER)
{
@@ -1278,11 +1274,17 @@ AcpiPsParseAml (
WalkState = AcpiDsGetCurrentWalkState (Thread);
continue;
}
-
else if (Status == AE_CTRL_TERMINATE)
{
Status = AE_OK;
}
+ else if (Status != AE_OK)
+ {
+ ACPI_REPORT_ERROR (("Method execution failed, %s\n",
+ AcpiFormatException (Status)));
+ ACPI_DUMP_PATHNAME (WalkState->MethodNode, "Method pathname: ",
+ ACPI_LV_ERROR, _COMPONENT);
+ }
/* We are done with this walk, move on to the parent if any */
@@ -1301,7 +1303,8 @@ AcpiPsParseAml (
TerminateStatus = AcpiDsTerminateControlMethod (WalkState);
if (ACPI_FAILURE (TerminateStatus))
{
- ACPI_REPORT_ERROR (("Could not terminate control method properly\n"));
+ ACPI_REPORT_ERROR ((
+ "Could not terminate control method properly\n"));
/* Ignore error and continue */
}
@@ -1328,7 +1331,8 @@ AcpiPsParseAml (
* If the method return value is not used by the parent,
* The object is deleted
*/
- Status = AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc);
+ Status = AcpiDsRestartControlMethod (WalkState,
+ PreviousWalkState->ReturnDesc);
if (ACPI_SUCCESS (Status))
{
WalkState->WalkType |= ACPI_WALK_METHOD_RESTART;
@@ -1339,10 +1343,6 @@ AcpiPsParseAml (
/* On error, delete any return object */
AcpiUtRemoveReference (PreviousWalkState->ReturnDesc);
-
- ACPI_REPORT_ERROR (("Method execution failed, %s\n", AcpiFormatException (Status)));
- ACPI_DUMP_PATHNAME (WalkState->MethodNode, "Method pathname: ",
- ACPI_LV_ERROR, _COMPONENT);
}
}
@@ -1354,7 +1354,6 @@ AcpiPsParseAml (
{
*(PreviousWalkState->CallerReturnDesc) = PreviousWalkState->ReturnDesc; /* NULL if no return value */
}
-
else if (PreviousWalkState->ReturnDesc)
{
/* Caller doesn't want it, must delete it */
diff --git a/sys/contrib/dev/acpica/rscalc.c b/sys/contrib/dev/acpica/rscalc.c
index b5b2563..b125ee5 100644
--- a/sys/contrib/dev/acpica/rscalc.c
+++ b/sys/contrib/dev/acpica/rscalc.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rscalc - Calculate stream and list lengths
- * $Revision: 43 $
+ * $Revision: 44 $
*
******************************************************************************/
@@ -891,7 +891,7 @@ AcpiRsGetPciRoutingTableLength (
for (TableIndex = 0; TableIndex < 4 && !NameFound; TableIndex++)
{
if ((ACPI_TYPE_STRING == ACPI_GET_OBJECT_TYPE (*SubObjectList)) ||
- ((INTERNAL_TYPE_REFERENCE == ACPI_GET_OBJECT_TYPE (*SubObjectList)) &&
+ ((ACPI_TYPE_LOCAL_REFERENCE == ACPI_GET_OBJECT_TYPE (*SubObjectList)) &&
((*SubObjectList)->Reference.Opcode == AML_INT_NAMEPATH_OP)))
{
NameFound = TRUE;
diff --git a/sys/contrib/dev/acpica/rscreate.c b/sys/contrib/dev/acpica/rscreate.c
index e0831e7..2235550 100644
--- a/sys/contrib/dev/acpica/rscreate.c
+++ b/sys/contrib/dev/acpica/rscreate.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rscreate - Create resource lists/tables
- * $Revision: 58 $
+ * $Revision: 61 $
*
******************************************************************************/
@@ -159,7 +159,8 @@ AcpiRsCreateResourceList (
ACPI_FUNCTION_TRACE ("RsCreateResourceList");
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamBuffer = %p\n", ByteStreamBuffer));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamBuffer = %p\n",
+ ByteStreamBuffer));
/*
* Params already validated, so we don't re-validate here
@@ -231,13 +232,13 @@ AcpiRsCreatePciRoutingTable (
ACPI_BUFFER *OutputBuffer)
{
UINT8 *Buffer;
- ACPI_OPERAND_OBJECT **TopObjectList = NULL;
- ACPI_OPERAND_OBJECT **SubObjectList = NULL;
- ACPI_OPERAND_OBJECT *PackageElement = NULL;
+ ACPI_OPERAND_OBJECT **TopObjectList;
+ ACPI_OPERAND_OBJECT **SubObjectList;
+ ACPI_OPERAND_OBJECT *ObjDesc;
ACPI_SIZE BufferSizeNeeded = 0;
- UINT32 NumberOfElements = 0;
- UINT32 Index = 0;
- ACPI_PCI_ROUTING_TABLE *UserPrt = NULL;
+ UINT32 NumberOfElements;
+ UINT32 Index;
+ ACPI_PCI_ROUTING_TABLE *UserPrt;
ACPI_NAMESPACE_NODE *Node;
ACPI_STATUS Status;
ACPI_BUFFER PathBuffer;
@@ -258,7 +259,8 @@ AcpiRsCreatePciRoutingTable (
return_ACPI_STATUS (Status);
}
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", (UINT32) BufferSizeNeeded));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n",
+ (UINT32) BufferSizeNeeded));
/* Validate/Allocate/Clear caller buffer */
@@ -269,7 +271,8 @@ AcpiRsCreatePciRoutingTable (
}
/*
- * Loop through the ACPI_INTERNAL_OBJECTS - Each object should contain an
+ * Loop through the ACPI_INTERNAL_OBJECTS - Each object
+ * should be a package that in turn contains an
* ACPI_INTEGER Address, a UINT8 Pin, a Name and a UINT8 SourceIndex.
*/
TopObjectList = PackageObject->Package.Elements;
@@ -293,87 +296,106 @@ AcpiRsCreatePciRoutingTable (
* The minus four is to subtract the size of the UINT8 Source[4] member
* because it is added below.
*/
- UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) -4);
+ UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4);
/*
- * Dereference the sub-package
+ * Each element of the top-level package must also be a package
*/
- PackageElement = *TopObjectList;
+ if (ACPI_GET_OBJECT_TYPE (*TopObjectList) != ACPI_TYPE_PACKAGE)
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X]) Need sub-package, found %s\n",
+ Index, AcpiUtGetObjectTypeName (*TopObjectList)));
+ return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
+ }
+
+ /* Each sub-package must be of length 4 */
+
+ if ((*TopObjectList)->Package.Count != 4)
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X]) Need package of length 4, found length %d\n",
+ Index, (*TopObjectList)->Package.Count));
+ return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT);
+ }
/*
+ * Dereference the sub-package.
* The SubObjectList will now point to an array of the four IRQ
- * elements: Address, Pin, Source and SourceIndex
+ * elements: [Address, Pin, Source, SourceIndex]
*/
- SubObjectList = PackageElement->Package.Elements;
+ SubObjectList = (*TopObjectList)->Package.Elements;
/*
- * 1) First subobject: Dereference the Address
+ * 1) First subobject: Dereference the PRT.Address
*/
- if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
+ ObjDesc = SubObjectList[0];
+ if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER)
{
- UserPrt->Address = (*SubObjectList)->Integer.Value;
+ UserPrt->Address = ObjDesc->Integer.Value;
}
else
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
- AcpiUtGetObjectTypeName (*SubObjectList)));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X].Address) Need Integer, found %s\n",
+ Index, AcpiUtGetObjectTypeName (ObjDesc)));
return_ACPI_STATUS (AE_BAD_DATA);
}
/*
- * 2) Second subobject: Dereference the Pin
+ * 2) Second subobject: Dereference the PRT.Pin
*/
- SubObjectList++;
-
- if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
+ ObjDesc = SubObjectList[1];
+ if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER)
{
- UserPrt->Pin = (UINT32) (*SubObjectList)->Integer.Value;
+ UserPrt->Pin = (UINT32) ObjDesc->Integer.Value;
}
else
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
- AcpiUtGetObjectTypeName (*SubObjectList)));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X].Pin) Need Integer, found %s\n",
+ Index, AcpiUtGetObjectTypeName (ObjDesc)));
return_ACPI_STATUS (AE_BAD_DATA);
}
/*
- * 3) Third subobject: Dereference the Source Name
+ * 3) Third subobject: Dereference the PRT.SourceName
*/
- SubObjectList++;
-
- switch (ACPI_GET_OBJECT_TYPE (*SubObjectList))
+ ObjDesc = SubObjectList[2];
+ switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
{
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
- if ((*SubObjectList)->Reference.Opcode != AML_INT_NAMEPATH_OP)
+ if (ObjDesc->Reference.Opcode != AML_INT_NAMEPATH_OP)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need name, found reference op %X\n",
- (*SubObjectList)->Reference.Opcode));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X].Source) Need name, found reference op %X\n",
+ Index, ObjDesc->Reference.Opcode));
return_ACPI_STATUS (AE_BAD_DATA);
}
- Node = (*SubObjectList)->Reference.Node;
+ Node = ObjDesc->Reference.Node;
/* Use *remaining* length of the buffer as max for pathname */
PathBuffer.Length = OutputBuffer->Length -
- (UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer);
+ (UINT32) ((UINT8 *) UserPrt->Source -
+ (UINT8 *) OutputBuffer->Pointer);
PathBuffer.Pointer = UserPrt->Source;
Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer);
- UserPrt->Length += ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */
+ UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */
break;
case ACPI_TYPE_STRING:
- ACPI_STRCPY (UserPrt->Source,
- (*SubObjectList)->String.Pointer);
+ ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer);
/* Add to the Length field the length of the string */
- UserPrt->Length += (*SubObjectList)->String.Length;
+ UserPrt->Length += ObjDesc->String.Length;
break;
@@ -390,8 +412,9 @@ AcpiRsCreatePciRoutingTable (
default:
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
- AcpiUtGetObjectTypeName (*SubObjectList)));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X].Source) Need Ref/String/Integer, found %s\n",
+ Index, AcpiUtGetObjectTypeName (ObjDesc)));
return_ACPI_STATUS (AE_BAD_DATA);
}
@@ -400,22 +423,22 @@ AcpiRsCreatePciRoutingTable (
UserPrt->Length = ACPI_ROUND_UP_TO_64BITS (UserPrt->Length);
/*
- * 4) Fourth subobject: Dereference the Source Index
+ * 4) Fourth subobject: Dereference the PRT.SourceIndex
*/
- SubObjectList++;
-
- if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
+ ObjDesc = SubObjectList[3];
+ if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER)
{
- UserPrt->SourceIndex = (UINT32) (*SubObjectList)->Integer.Value;
+ UserPrt->SourceIndex = (UINT32) ObjDesc->Integer.Value;
}
else
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
- AcpiUtGetObjectTypeName (*SubObjectList)));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "(PRT[%X].SourceIndex) Need Integer, found %s\n",
+ Index, AcpiUtGetObjectTypeName (ObjDesc)));
return_ACPI_STATUS (AE_BAD_DATA);
}
- /* Point to the next ACPI_OPERAND_OBJECT */
+ /* Point to the next ACPI_OPERAND_OBJECT in the top level package */
TopObjectList++;
}
@@ -456,7 +479,8 @@ AcpiRsCreateByteStream (
ACPI_FUNCTION_TRACE ("RsCreateByteStream");
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n", LinkedListBuffer));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n",
+ LinkedListBuffer));
/*
* Params already validated, so we don't re-validate here
diff --git a/sys/contrib/dev/acpica/tbconvrt.c b/sys/contrib/dev/acpica/tbconvrt.c
index 14d33e4..0490767 100644
--- a/sys/contrib/dev/acpica/tbconvrt.c
+++ b/sys/contrib/dev/acpica/tbconvrt.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbconvrt - ACPI Table conversion utilities
- * $Revision: 43 $
+ * $Revision: 45 $
*
*****************************************************************************/
@@ -128,11 +128,13 @@
*
* FUNCTION: AcpiTbGetTableCount
*
- * PARAMETERS:
+ * PARAMETERS: RSDP - Pointer to the RSDP
+ * RSDT - Pointer to the RSDT/XSDT
*
- * RETURN:
+ * RETURN: The number of tables pointed to by the RSDT or XSDT.
*
- * DESCRIPTION: Calculate the number of tables
+ * DESCRIPTION: Calculate the number of tables. Automatically handles either
+ * an RSDT or XSDT.
*
******************************************************************************/
@@ -173,9 +175,9 @@ AcpiTbGetTableCount (
*
* FUNCTION: AcpiTbConvertToXsdt
*
- * PARAMETERS:
+ * PARAMETERS: TableInfo - Info about the RSDT
*
- * RETURN:
+ * RETURN: Status
*
* DESCRIPTION: Convert an RSDT to an XSDT (internal common format)
*
@@ -234,7 +236,6 @@ AcpiTbConvertToXsdt (
/* Point the table descriptor to the new table */
TableInfo->Pointer = (ACPI_TABLE_HEADER *) NewTable;
- TableInfo->BasePointer = (ACPI_TABLE_HEADER *) NewTable;
TableInfo->Length = TableSize;
TableInfo->Allocation = ACPI_MEM_ALLOCATED;
@@ -419,13 +420,11 @@ AcpiTbConvertFadt2 (
*
* RETURN: Status
*
- * DESCRIPTION:
- * Converts a BIOS supplied ACPI 1.0 FADT to an intermediate
- * ACPI 2.0 FADT. If the BIOS supplied a 2.0 FADT then it is simply
- * copied to the intermediate FADT. The ACPI CA software uses this
- * intermediate FADT. Thus a significant amount of special #ifdef
- * type codeing is saved. This intermediate FADT will need to be
- * freed at some point.
+ * DESCRIPTION: Converts a BIOS supplied ACPI 1.0 FADT to a local
+ * ACPI 2.0 FADT. If the BIOS supplied a 2.0 FADT then it is simply
+ * copied to the local FADT. The ACPI CA software uses this
+ * local FADT. Thus a significant amount of special #ifdef
+ * type codeing is saved.
*
******************************************************************************/
@@ -498,7 +497,6 @@ AcpiTbConvertTableFadt (void)
/* Install the new table */
TableDesc->Pointer = (ACPI_TABLE_HEADER *) AcpiGbl_FADT;
- TableDesc->BasePointer = AcpiGbl_FADT;
TableDesc->Allocation = ACPI_MEM_ALLOCATED;
TableDesc->Length = sizeof (FADT_DESCRIPTOR_REV2);
diff --git a/sys/contrib/dev/acpica/tbget.c b/sys/contrib/dev/acpica/tbget.c
index 428ea3f..6f9b9f8 100644
--- a/sys/contrib/dev/acpica/tbget.c
+++ b/sys/contrib/dev/acpica/tbget.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbget - ACPI Table get* routines
- * $Revision: 80 $
+ * $Revision: 81 $
*
*****************************************************************************/
@@ -492,7 +492,6 @@ AcpiTbGetThisTable (
TableInfo->Pointer = FullTable;
TableInfo->Length = (ACPI_SIZE) Header->Length;
TableInfo->Allocation = Allocation;
- TableInfo->BasePointer = FullTable;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"Found table [%4.4s] at %8.8X%8.8X, mapped/copied to %p\n",
diff --git a/sys/contrib/dev/acpica/tbgetall.c b/sys/contrib/dev/acpica/tbgetall.c
index 690a999..fd7184d 100644
--- a/sys/contrib/dev/acpica/tbgetall.c
+++ b/sys/contrib/dev/acpica/tbgetall.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbgetall - Get all required ACPI tables
- * $Revision: 2 $
+ * $Revision: 3 $
*
*****************************************************************************/
@@ -319,7 +319,14 @@ AcpiTbGetRequiredTables (
* Get the tables needed by this subsystem (FADT and any SSDTs).
* NOTE: All other tables are completely ignored at this time.
*/
- AcpiTbGetPrimaryTable (&Address, &TableInfo);
+ Status = AcpiTbGetPrimaryTable (&Address, &TableInfo);
+ if ((Status != AE_OK) && (Status != AE_TABLE_NOT_SUPPORTED))
+ {
+ ACPI_REPORT_WARNING (("%s, while getting table at %8.8X%8.8X\n",
+ AcpiFormatException (Status),
+ ACPI_HIDWORD (Address.Pointer.Value),
+ ACPI_LODWORD (Address.Pointer.Value)));
+ }
}
/* We must have a FADT to continue */
diff --git a/sys/contrib/dev/acpica/tbinstal.c b/sys/contrib/dev/acpica/tbinstal.c
index 6f7a213..d4a28d1 100644
--- a/sys/contrib/dev/acpica/tbinstal.c
+++ b/sys/contrib/dev/acpica/tbinstal.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbinstal - ACPI table installation and removal
- * $Revision: 63 $
+ * $Revision: 64 $
*
*****************************************************************************/
@@ -394,7 +394,6 @@ AcpiTbInitTableDescriptor (
TableDesc->Type = TableInfo->Type;
TableDesc->Pointer = TableInfo->Pointer;
- TableDesc->BasePointer = TableInfo->BasePointer;
TableDesc->Length = TableInfo->Length;
TableDesc->Allocation = TableInfo->Allocation;
TableDesc->AmlStart = (UINT8 *) (TableDesc->Pointer + 1),
@@ -597,12 +596,12 @@ AcpiTbDeleteSingleTable (
case ACPI_MEM_ALLOCATED:
- ACPI_MEM_FREE (TableDesc->BasePointer);
+ ACPI_MEM_FREE (TableDesc->Pointer);
break;
case ACPI_MEM_MAPPED:
- AcpiOsUnmapMemory (TableDesc->BasePointer, TableDesc->Length);
+ AcpiOsUnmapMemory (TableDesc->Pointer, TableDesc->Length);
break;
default:
diff --git a/sys/contrib/dev/acpica/tbrsdt.c b/sys/contrib/dev/acpica/tbrsdt.c
index 66c14cb..9876f61 100644
--- a/sys/contrib/dev/acpica/tbrsdt.c
+++ b/sys/contrib/dev/acpica/tbrsdt.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbrsdt - ACPI RSDT table utilities
- * $Revision: 3 $
+ * $Revision: 4 $
*
*****************************************************************************/
@@ -206,7 +206,6 @@ AcpiTbVerifyRsdp (
TableInfo.Pointer = ACPI_CAST_PTR (ACPI_TABLE_HEADER, Rsdp);
TableInfo.Length = sizeof (RSDP_DESCRIPTOR);
TableInfo.Allocation = ACPI_MEM_MAPPED;
- TableInfo.BasePointer = Rsdp;
/* Save the table pointers and allocation info */
diff --git a/sys/contrib/dev/acpica/tbutils.c b/sys/contrib/dev/acpica/tbutils.c
index a1334b6..773bd19 100644
--- a/sys/contrib/dev/acpica/tbutils.c
+++ b/sys/contrib/dev/acpica/tbutils.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbutils - Table manipulation utilities
- * $Revision: 56 $
+ * $Revision: 57 $
*
*****************************************************************************/
@@ -274,8 +274,8 @@ AcpiTbVerifyTableChecksum (
if (Checksum)
{
- ACPI_REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n",
- (UINT32) Checksum, TableHeader->Signature));
+ ACPI_REPORT_WARNING (("Invalid checksum in table [%4.4s] (%02X, sum %02X is not zero)\n",
+ TableHeader->Signature, (UINT32) TableHeader->Checksum, (UINT32) Checksum));
Status = AE_BAD_CHECKSUM;
}
diff --git a/sys/contrib/dev/acpica/tbxfroot.c b/sys/contrib/dev/acpica/tbxfroot.c
index aac1503..f6ba0ea 100644
--- a/sys/contrib/dev/acpica/tbxfroot.c
+++ b/sys/contrib/dev/acpica/tbxfroot.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
- * $Revision: 64 $
+ * $Revision: 65 $
*
*****************************************************************************/
@@ -415,7 +415,8 @@ AcpiFindRootPointer (
Status = AcpiTbFindRsdp (&TableInfo, Flags);
if (ACPI_FAILURE (Status))
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "RSDP structure not found\n"));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "RSDP structure not found, %s Flags=%X\n",
+ AcpiFormatException (Status), Flags));
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
}
@@ -523,6 +524,8 @@ AcpiTbFindRsdp (
(void **) &TablePtr);
if (ACPI_FAILURE (Status))
{
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
+ LO_RSDP_WINDOW_BASE, LO_RSDP_WINDOW_SIZE));
return_ACPI_STATUS (Status);
}
@@ -547,6 +550,8 @@ AcpiTbFindRsdp (
(void **) &TablePtr);
if (ACPI_FAILURE (Status))
{
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
+ HI_RSDP_WINDOW_BASE, HI_RSDP_WINDOW_SIZE));
return_ACPI_STATUS (Status);
}
diff --git a/sys/contrib/dev/acpica/utcopy.c b/sys/contrib/dev/acpica/utcopy.c
index aa8cf35..c1bb6d5 100644
--- a/sys/contrib/dev/acpica/utcopy.c
+++ b/sys/contrib/dev/acpica/utcopy.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utcopy - Internal to external object translation utilities
- * $Revision: 104 $
+ * $Revision: 105 $
*
*****************************************************************************/
@@ -207,7 +207,7 @@ AcpiUtCopyIsimpleToEsimple (
break;
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
/*
* This is an object reference. Attempt to dereference it.
diff --git a/sys/contrib/dev/acpica/utdelete.c b/sys/contrib/dev/acpica/utdelete.c
index 08c5ff1..40d58ba 100644
--- a/sys/contrib/dev/acpica/utdelete.c
+++ b/sys/contrib/dev/acpica/utdelete.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utdelete - object deletion and reference count utilities
- * $Revision: 91 $
+ * $Revision: 92 $
*
******************************************************************************/
@@ -530,7 +530,7 @@ AcpiUtUpdateObjectReference (
break;
- case INTERNAL_TYPE_ADDRESS_HANDLER:
+ case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
/* Must walk list of address handlers */
@@ -579,7 +579,7 @@ AcpiUtUpdateObjectReference (
break;
- case INTERNAL_TYPE_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
Status = AcpiUtCreateUpdateStateAndPush (
Object->Field.RegionObj, Action, &StateList);
@@ -590,7 +590,7 @@ AcpiUtUpdateObjectReference (
break;
- case INTERNAL_TYPE_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
Status = AcpiUtCreateUpdateStateAndPush (
Object->BankField.BankObj, Action, &StateList);
@@ -608,7 +608,7 @@ AcpiUtUpdateObjectReference (
break;
- case INTERNAL_TYPE_INDEX_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
Status = AcpiUtCreateUpdateStateAndPush (
Object->IndexField.IndexObj, Action, &StateList);
@@ -627,7 +627,7 @@ AcpiUtUpdateObjectReference (
case ACPI_TYPE_REGION:
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
default:
/* No subobjects */
diff --git a/sys/contrib/dev/acpica/utglobal.c b/sys/contrib/dev/acpica/utglobal.c
index bcd60b5..52be7a0 100644
--- a/sys/contrib/dev/acpica/utglobal.c
+++ b/sys/contrib/dev/acpica/utglobal.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utglobal - Global variables for the ACPI subsystem
- * $Revision: 171 $
+ * $Revision: 172 $
*
*****************************************************************************/
@@ -275,11 +275,11 @@ const NATIVE_CHAR *AcpiGbl_DbSleepStates[ACPI_NUM_SLEEP_STATES] = {
const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
{
- {"_GPE", INTERNAL_TYPE_SCOPE, NULL},
- {"_PR_", INTERNAL_TYPE_SCOPE, NULL},
+ {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
+ {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_SB_", ACPI_TYPE_DEVICE, NULL},
- {"_SI_", INTERNAL_TYPE_SCOPE, NULL},
- {"_TZ_", INTERNAL_TYPE_SCOPE, NULL},
+ {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
+ {"_TZ_", ACPI_TYPE_LOCAL_SCOPE, NULL},
{"_REV", ACPI_TYPE_INTEGER, "2"},
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
{"_GL_", ACPI_TYPE_MUTEX, "0"},
@@ -324,17 +324,10 @@ const UINT8 AcpiGbl_NsProperties[] =
ACPI_NS_NORMAL, /* 23 Address Handler */
ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 24 Resource Desc */
ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Field */
- ACPI_NS_NORMAL, /* 26 DefFieldDefn */
- ACPI_NS_NORMAL, /* 27 BankFieldDefn */
- ACPI_NS_NORMAL, /* 28 IndexFieldDefn */
- ACPI_NS_NORMAL, /* 29 If */
- ACPI_NS_NORMAL, /* 30 Else */
- ACPI_NS_NORMAL, /* 31 While */
- ACPI_NS_NEWSCOPE, /* 32 Scope */
- ACPI_NS_LOCAL, /* 33 DefAny */
- ACPI_NS_NORMAL, /* 34 Extra */
- ACPI_NS_NORMAL, /* 35 Data */
- ACPI_NS_NORMAL /* 36 Invalid */
+ ACPI_NS_NEWSCOPE, /* 26 Scope */
+ ACPI_NS_NORMAL, /* 27 Extra */
+ ACPI_NS_NORMAL, /* 28 Data */
+ ACPI_NS_NORMAL /* 29 Invalid */
};
@@ -580,17 +573,10 @@ static const NATIVE_CHAR *AcpiGbl_NsTypeNames[] = /* printable names of AC
/* 23 */ "AddrHandler",
/* 24 */ "ResourceDesc",
/* 25 */ "ResourceFld",
- /* 26 */ "RegionFldDfn",
- /* 27 */ "BankFldDfn",
- /* 28 */ "IndexFldDfn",
- /* 29 */ "If",
- /* 30 */ "Else",
- /* 31 */ "While",
- /* 32 */ "Scope",
- /* 33 */ "DefAny",
- /* 34 */ "Extra",
- /* 35 */ "Data",
- /* 36 */ "Invalid"
+ /* 26 */ "Scope",
+ /* 27 */ "Extra",
+ /* 28 */ "Data",
+ /* 39 */ "Invalid"
};
@@ -599,7 +585,7 @@ AcpiUtGetTypeName (
ACPI_OBJECT_TYPE Type)
{
- if (Type > INTERNAL_TYPE_INVALID)
+ if (Type > ACPI_TYPE_INVALID)
{
return ((NATIVE_CHAR *) AcpiGbl_BadType);
}
@@ -662,7 +648,7 @@ AcpiUtGetMutexName (
*
* FUNCTION: AcpiUtValidObjectType
*
- * PARAMETERS: None.
+ * PARAMETERS: Type - Object type to be validated
*
* RETURN: TRUE if valid object type
*
@@ -675,13 +661,11 @@ AcpiUtValidObjectType (
ACPI_OBJECT_TYPE Type)
{
- if (Type > ACPI_TYPE_MAX)
+ if (Type > ACPI_TYPE_LOCAL_MAX)
{
- if ((Type < INTERNAL_TYPE_BEGIN) ||
- (Type > INTERNAL_TYPE_MAX))
- {
- return (FALSE);
- }
+ /* Note: Assumes all TYPEs are contiguous (external/local) */
+
+ return (FALSE);
}
return (TRUE);
@@ -866,7 +850,7 @@ AcpiUtInitGlobals (
AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME;
AcpiGbl_RootNodeStruct.Descriptor = ACPI_DESC_TYPE_NAMED;
- AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_ANY;
+ AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE;
AcpiGbl_RootNodeStruct.Child = NULL;
AcpiGbl_RootNodeStruct.Peer = NULL;
AcpiGbl_RootNodeStruct.Object = NULL;
diff --git a/sys/contrib/dev/acpica/utmisc.c b/sys/contrib/dev/acpica/utmisc.c
index c132f27..4862b7d 100644
--- a/sys/contrib/dev/acpica/utmisc.c
+++ b/sys/contrib/dev/acpica/utmisc.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utmisc - common utility procedures
- * $Revision: 84 $
+ * $Revision: 86 $
*
******************************************************************************/
@@ -127,6 +127,102 @@
/*******************************************************************************
*
+ * FUNCTION: AcpiUtPrintString
+ *
+ * PARAMETERS: String - Null terminated ASCII string
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Dump an ASCII string with support for ACPI-defined escape
+ * sequences.
+ *
+ ******************************************************************************/
+
+void
+AcpiUtPrintString (
+ char *String,
+ UINT8 MaxLength)
+{
+ UINT32 i;
+
+
+ if (!String)
+ {
+ AcpiOsPrintf ("<\"NULL STRING PTR\">");
+ return;
+ }
+
+ AcpiOsPrintf ("\"");
+ for (i = 0; String[i] && (i < MaxLength); i++)
+ {
+ /* Escape sequences */
+
+ switch (String[i])
+ {
+ case 0x07:
+ AcpiOsPrintf ("\\a"); /* BELL */
+ break;
+
+ case 0x08:
+ AcpiOsPrintf ("\\b"); /* BACKSPACE */
+ break;
+
+ case 0x0C:
+ AcpiOsPrintf ("\\f"); /* FORMFEED */
+ break;
+
+ case 0x0A:
+ AcpiOsPrintf ("\\n"); /* LINEFEED */
+ break;
+
+ case 0x0D:
+ AcpiOsPrintf ("\\r"); /* CARRIAGE RETURN*/
+ break;
+
+ case 0x09:
+ AcpiOsPrintf ("\\t"); /* HORIZONTAL TAB */
+ break;
+
+ case 0x0B:
+ AcpiOsPrintf ("\\v"); /* VERTICAL TAB */
+ break;
+
+ case '\'': /* Single Quote */
+ case '\"': /* Double Quote */
+ case '\\': /* Backslash */
+ AcpiOsPrintf ("\\%c", (int) String[i]);
+ break;
+
+ default:
+
+ /* Check for printable character or hex escape */
+
+ if (ACPI_IS_PRINT (String[i]))
+ {
+ /* This is a normal character */
+
+ AcpiOsPrintf ("%c", (int) String[i]);
+ }
+ else
+ {
+ /* All others will be Hex escapes */
+
+ AcpiOsPrintf ("\\x%2.2X", (INT32) String[i]);
+ }
+ break;
+ }
+ }
+ AcpiOsPrintf ("\"");
+
+ if (i == MaxLength && String[i])
+ {
+ AcpiOsPrintf ("...");
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiUtDwordByteSwap
*
* PARAMETERS: Value - Value to be converted
@@ -723,7 +819,7 @@ AcpiUtAcquireMutex (
ThisThreadId, AcpiUtGetMutexName (MutexId)));
Status = AcpiOsWaitSemaphore (AcpiGbl_AcpiMutexInfo[MutexId].Mutex,
- 1, WAIT_FOREVER);
+ 1, ACPI_WAIT_FOREVER);
if (ACPI_SUCCESS (Status))
{
ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %X acquired Mutex [%s]\n",
diff --git a/sys/contrib/dev/acpica/utobject.c b/sys/contrib/dev/acpica/utobject.c
index e751395..67283a0 100644
--- a/sys/contrib/dev/acpica/utobject.c
+++ b/sys/contrib/dev/acpica/utobject.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utobject - ACPI object create/delete/size/cache routines
- * $Revision: 76 $
+ * $Revision: 79 $
*
*****************************************************************************/
@@ -182,7 +182,7 @@ AcpiUtCreateInternalObjectDbg (
return_PTR (NULL);
}
- SecondObject->Common.Type = INTERNAL_TYPE_EXTRA;
+ SecondObject->Common.Type = ACPI_TYPE_LOCAL_EXTRA;
SecondObject->Common.ReferenceCount = 1;
/* Link the second object to the first */
@@ -211,6 +211,61 @@ AcpiUtCreateInternalObjectDbg (
/*******************************************************************************
*
+ * FUNCTION: AcpiUtCreateBufferObject
+ *
+ * PARAMETERS: BufferSize - Size of buffer to be created
+ *
+ * RETURN: Pointer to a new Buffer object
+ *
+ * DESCRIPTION: Create a fully initialized buffer object
+ *
+ ******************************************************************************/
+
+ACPI_OPERAND_OBJECT *
+AcpiUtCreateBufferObject (
+ ACPI_SIZE BufferSize)
+{
+ ACPI_OPERAND_OBJECT *BufferDesc;
+ UINT8 *Buffer;
+
+
+ ACPI_FUNCTION_TRACE_U32 ("UtCreateBufferObject", BufferSize);
+
+
+ /*
+ * Create a new Buffer object
+ */
+ BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
+ if (!BufferDesc)
+ {
+ return_PTR (NULL);
+ }
+
+ /* Allocate the actual buffer */
+
+ Buffer = ACPI_MEM_CALLOCATE (BufferSize);
+ if (!Buffer)
+ {
+ ACPI_REPORT_ERROR (("CreateBuffer: could not allocate size %X\n",
+ (UINT32) BufferSize));
+ AcpiUtRemoveReference (BufferDesc);
+ return_PTR (NULL);
+ }
+
+ /* Complete buffer object initialization */
+
+ BufferDesc->Buffer.Flags |= AOPOBJ_DATA_VALID;
+ BufferDesc->Buffer.Pointer = Buffer;
+ BufferDesc->Buffer.Length = (UINT32) BufferSize;
+
+ /* Return the new buffer descriptor */
+
+ return_PTR (BufferDesc);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiUtValidInternalObject
*
* PARAMETERS: Object - Object to be validated
@@ -231,8 +286,7 @@ AcpiUtValidInternalObject (
if (!Object)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "**** Null Object Ptr\n"));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Null Object Ptr\n"));
return (FALSE);
}
@@ -258,10 +312,17 @@ AcpiUtValidInternalObject (
"**** Obj %p is a parser obj, not ACPI obj\n", Object));
break;
+ case ACPI_DESC_TYPE_CACHED:
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "**** Obj %p has already been released to internal cache\n", Object));
+ break;
+
default:
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "**** Obj %p is of unknown type\n", Object));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "**** Obj %p has unknown descriptor type %X\n", Object,
+ ACPI_GET_DESCRIPTOR_TYPE (Object)));
break;
}
@@ -454,7 +515,7 @@ AcpiUtGetSimpleObjectSize (
break;
- case INTERNAL_TYPE_REFERENCE:
+ case ACPI_TYPE_LOCAL_REFERENCE:
switch (InternalObject->Reference.Opcode)
{
OpenPOWER on IntegriCloud