This commit was generated by cvs2svn to compensate for changes in r107325,

which included commits to RCS files with non-trunk default branches.
This commit is contained in:
Mitsuru IWASAKI 2002-11-27 18:07:48 +00:00
commit 360aac4e22
77 changed files with 1842 additions and 1381 deletions

View File

@ -1,3 +1,276 @@
----------------------------------------
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.

View File

@ -145,11 +145,19 @@ FlGenerateFilename (
char *InputFilename,
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);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdisasm.h - AML disassembler
* $Revision: 3 $
* $Revision: 5 $
*
*****************************************************************************/
@ -198,10 +198,6 @@ UINT32
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

View File

@ -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

View File

@ -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(

View File

@ -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;

View File

@ -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);
/*
@ -703,10 +704,6 @@ void
AcpiExTruncateFor32bitTable (
ACPI_OPERAND_OBJECT *ObjDesc);
BOOLEAN
AcpiExValidateObjectType (
ACPI_OBJECT_TYPE Type);
BOOLEAN
AcpiExAcquireGlobalLock (
UINT32 Rule);

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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 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 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_NS_NODE_MAX 0x1A /* Last typecode used within a NS Node */
/*
* 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_NODE_MAX 0x19
#define ACPI_TYPE_LOCAL_MAX 0x1C
/* These are pseudo-types because there are never any namespace nodes with these types */
/* All types above here are invalid */
#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 INTERNAL_TYPE_MAX 0x23
#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

View File

@ -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;

View File

@ -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)
{

View File

@ -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--;
}

View File

@ -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]);

View File

@ -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;

View File

@ -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;
@ -380,96 +380,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

View File

@ -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;

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dmutils - AML disassembler utilities
* $Revision: 4 $
* $Revision: 5 $
*
******************************************************************************/
@ -287,6 +287,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

View File

@ -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);

View File

@ -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);
}
/*

View File

@ -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,

View File

@ -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)
{

View File

@ -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);

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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 */
break;
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);
}
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 */

View File

@ -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);

View File

@ -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.
*
******************************************************************************/

View File

@ -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 */
if (AcpiGbl_GpeNumberMax >= AcpiGbl_FADT->Gpe1Base)
/* Check for GPE0/GPE1 overlap (if both banks exist) */
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))));
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_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)));
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);
}

View File

@ -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.

View File

@ -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;

View File

@ -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;

View File

@ -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);
}

View File

@ -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 */
/* Copy the string to the buffer */
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;
/* 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,35 +636,7 @@ 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;
break;
case ACPI_TYPE_STRING:
if (MaxLength >= ObjDesc->String.Length)
{
*ResultDesc = ObjDesc;
}
else
{
/* Must copy the string first and then truncate it */
return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
}
RetDesc->String.Length = (UINT32) ACPI_STRLEN ((char *) NewBuf);
break;
@ -677,6 +644,21 @@ AcpiExConvertToString (
return_ACPI_STATUS (AE_TYPE);
}
/*
* 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);
}
@ -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.

View File

@ -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:

View File

@ -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",

View File

@ -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 */

View File

@ -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;

View File

@ -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);
}

View File

@ -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 */

View File

@ -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)
*

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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 */

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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));
}
}

View File

@ -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;
Node->OwnerId = OwnerId;
Node->Type = (UINT8) Type;
/*
* 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;
}
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

View File

@ -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--)
AcpiOsPrintf ("%2d%*s", (UINT32) Level - 1, (int) Level * 2, " ");
/* Check the node type and name */
if (Type > ACPI_TYPE_LOCAL_MAX)
{
/* 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 ("-");
}
}
}
/* Check the integrity of our data */
if (Type > INTERNAL_TYPE_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:

View File

@ -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",

View File

@ -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, "."));
}

View File

@ -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;

View File

@ -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,

View File

@ -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

View File

@ -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.
*
******************************************************************************/

View File

@ -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);
}

View File

@ -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;

View File

@ -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 */
/* 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),
/* 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 !*/
};

View File

@ -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;

View File

@ -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);

View File

@ -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 */

View File

@ -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:

View File

@ -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 */

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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.

View File

@ -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 */

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utmisc - common utility procedures
* $Revision: 84 $
* $Revision: 86 $
*
******************************************************************************/
@ -125,6 +125,102 @@
ACPI_MODULE_NAME ("utmisc")
/*******************************************************************************
*
* 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
@ -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",

View File

@ -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 */
@ -209,6 +209,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
@ -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)
{