Index: sys/ctype.h =================================================================== RCS file: /home/ncvs/src/sys/sys/ctype.h,v retrieving revision 1.2 diff -u -r1.2 ctype.h --- sys/ctype.h 29 Dec 1999 04:24:39 -0000 1.2 +++ sys/ctype.h 21 Nov 2002 06:12:23 -0000 @@ -52,6 +52,7 @@ #define isxdigit(c) (isdigit(c) \ || ((c) >= 'A' && (c) <= 'F') \ || ((c) >= 'a' && (c) <= 'f')) +#define isprint(c) ((c) >= ' ' && (c) <= '~') #define toupper(c) ((c) - 0x20 * (((c) >= 'a') && ((c) <= 'z'))) #define tolower(c) ((c) + 0x20 * (((c) >= 'A') && ((c) <= 'Z'))) Index: contrib/dev/acpica/acapps.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acapps.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 acapps.h --- contrib/dev/acpica/acapps.h 29 Aug 2002 01:51:16 -0000 1.1.1.1 +++ contrib/dev/acpica/acapps.h 21 Nov 2002 03:00:23 -0000 @@ -146,10 +146,18 @@ 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 @@ ACPI_STATUS AdGetTables ( - char *Filename); + char *Filename, + BOOLEAN GetAllTables); ACPI_STATUS AdParseTables (void); Index: contrib/dev/acpica/acconfig.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acconfig.h,v retrieving revision 1.22 diff -u -r1.22 acconfig.h --- contrib/dev/acpica/acconfig.h 4 Oct 2002 20:09:19 -0000 1.22 +++ contrib/dev/acpica/acconfig.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acconfig.h - Global configuration constants - * $Revision: 112 $ + * $Revision: 118 $ * *****************************************************************************/ @@ -145,7 +145,7 @@ /* Version string */ -#define ACPI_CA_VERSION 0x20021002 +#define ACPI_CA_VERSION 0x20021115 /* Version of ACPI supported */ @@ -256,6 +256,10 @@ #define ACPI_RSDP_CHECKSUM_LENGTH 20 #define ACPI_RSDP_XCHECKSUM_LENGTH 36 + +/* SMBus bidirectional buffer size */ + +#define ACPI_SMBUS_BUFFER_SIZE 34 /****************************************************************************** Index: contrib/dev/acpica/acdisasm.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acdisasm.h,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 acdisasm.h --- contrib/dev/acpica/acdisasm.h 29 Aug 2002 01:51:16 -0000 1.1.1.2 +++ contrib/dev/acpica/acdisasm.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdisasm.h - AML disassembler - * $Revision: 3 $ + * $Revision: 5 $ * *****************************************************************************/ @@ -199,10 +199,6 @@ char *Name); void -AcpiDmString ( - char *String); - -void AcpiDmUnicode ( ACPI_PARSE_OBJECT *Op); @@ -334,6 +330,9 @@ AcpiDmBitList ( UINT16 Mask); +void +AcpiDmDecodeAttribute ( + UINT8 Attribute); /* * dmresrcl Index: contrib/dev/acpica/acdispat.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acdispat.h,v retrieving revision 1.1.1.12 diff -u -r1.1.1.12 acdispat.h --- contrib/dev/acpica/acdispat.h 9 Jul 2002 17:51:22 -0000 1.1.1.12 +++ contrib/dev/acpica/acdispat.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdispat.h - dispatcher (parser to interpreter interface) - * $Revision: 54 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -467,6 +467,10 @@ ACPI_STATUS AcpiDsResolveOperands ( + ACPI_WALK_STATE *WalkState); + +void +AcpiDsClearOperands ( ACPI_WALK_STATE *WalkState); Index: contrib/dev/acpica/acevents.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acevents.h,v retrieving revision 1.1.1.11 diff -u -r1.1.1.11 acevents.h --- contrib/dev/acpica/acevents.h 9 Jul 2002 17:51:22 -0000 1.1.1.11 +++ contrib/dev/acpica/acevents.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acevents.h - Event subcomponent prototypes and defines - * $Revision: 79 $ + * $Revision: 80 $ * *****************************************************************************/ @@ -154,7 +154,7 @@ ACPI_STATUS AcpiEvAcquireGlobalLock( - UINT32 Timeout); + UINT16 Timeout); ACPI_STATUS AcpiEvReleaseGlobalLock( Index: contrib/dev/acpica/acglobal.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acglobal.h,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 acglobal.h --- contrib/dev/acpica/acglobal.h 4 Oct 2002 20:07:53 -0000 1.1.1.15 +++ contrib/dev/acpica/acglobal.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acglobal.h - Declarations for global variables - * $Revision: 131 $ + * $Revision: 132 $ * *****************************************************************************/ @@ -243,7 +243,7 @@ * ****************************************************************************/ -#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 @@ /* * 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; Index: contrib/dev/acpica/acinterp.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acinterp.h,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 acinterp.h --- contrib/dev/acpica/acinterp.h 4 Oct 2002 20:07:53 -0000 1.1.1.16 +++ contrib/dev/acpica/acinterp.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acinterp.h - Interpreter subcomponent prototypes and defines - * $Revision: 139 $ + * $Revision: 142 $ * *****************************************************************************/ @@ -255,7 +255,8 @@ 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 @@ ACPI_STATUS AcpiExSystemWaitSemaphore ( ACPI_HANDLE Semaphore, - UINT32 Timeout); + UINT16 Timeout); /* @@ -702,10 +703,6 @@ void AcpiExTruncateFor32bitTable ( ACPI_OPERAND_OBJECT *ObjDesc); - -BOOLEAN -AcpiExValidateObjectType ( - ACPI_OBJECT_TYPE Type); BOOLEAN AcpiExAcquireGlobalLock ( Index: contrib/dev/acpica/aclocal.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/aclocal.h,v retrieving revision 1.1.1.20 diff -u -r1.1.1.20 aclocal.h --- contrib/dev/acpica/aclocal.h 4 Oct 2002 20:07:53 -0000 1.1.1.20 +++ contrib/dev/acpica/aclocal.h 21 Nov 2002 03:00:23 -0000 @@ -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 @@ struct AcpiTableDesc *Next; struct AcpiTableDesc *InstalledDesc; ACPI_TABLE_HEADER *Pointer; - void *BasePointer; UINT8 *AmlStart; UINT64 PhysicalAddress; UINT32 AmlLength; @@ -746,6 +745,7 @@ char *Filename; char *ExternalName; char *Namepath; + char NameSeg[4]; UINT32 ExtraValue; UINT32 Column; UINT32 LineNumber; Index: contrib/dev/acpica/acnamesp.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acnamesp.h,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 acnamesp.h --- contrib/dev/acpica/acnamesp.h 4 Oct 2002 20:07:53 -0000 1.1.1.13 +++ contrib/dev/acpica/acnamesp.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acnamesp.h - Namespace subcomponent prototypes and defines - * $Revision: 127 $ + * $Revision: 129 $ * *****************************************************************************/ @@ -269,6 +269,10 @@ AcpiNsDeleteChildren ( ACPI_NAMESPACE_NODE *Parent); +int +AcpiNsCompareNames ( + char *Name1, + char *Name2); /* * Namespace modification - nsmodify @@ -372,17 +376,13 @@ /* - * 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 @@ 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); Index: contrib/dev/acpica/acobject.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acobject.h,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 acobject.h --- contrib/dev/acpica/acobject.h 29 Aug 2002 01:51:17 -0000 1.1.1.13 +++ contrib/dev/acpica/acobject.h 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) - * $Revision: 113 $ + * $Revision: 114 $ * *****************************************************************************/ @@ -290,6 +290,7 @@ 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; Index: contrib/dev/acpica/acparser.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acparser.h,v retrieving revision 1.1.1.11 diff -u -r1.1.1.11 acparser.h --- contrib/dev/acpica/acparser.h 4 Oct 2002 20:07:53 -0000 1.1.1.11 +++ contrib/dev/acpica/acparser.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: acparser.h - AML Parser subcomponent prototypes and defines - * $Revision: 62 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -180,9 +180,9 @@ 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 @@ ACPI_STATUS AcpiPsGetNextArg ( + ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, UINT32 ArgType, - UINT32 *ArgCount, ACPI_PARSE_OBJECT **ReturnArg); Index: contrib/dev/acpica/acpiosxf.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acpiosxf.h,v retrieving revision 1.11 diff -u -r1.11 acpiosxf.h --- contrib/dev/acpica/acpiosxf.h 29 Aug 2002 01:52:26 -0000 1.11 +++ contrib/dev/acpica/acpiosxf.h 21 Nov 2002 03:00:23 -0000 @@ -209,7 +209,7 @@ AcpiOsWaitSemaphore ( ACPI_HANDLE Handle, UINT32 Units, - UINT32 Timeout); + UINT16 Timeout); ACPI_STATUS AcpiOsSignalSemaphore ( Index: contrib/dev/acpica/acpixf.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acpixf.h,v retrieving revision 1.16 diff -u -r1.16 acpixf.h --- contrib/dev/acpica/acpixf.h 30 Jul 2002 19:35:22 -0000 1.16 +++ contrib/dev/acpica/acpixf.h 21 Nov 2002 03:00:23 -0000 @@ -372,7 +372,7 @@ ACPI_STATUS AcpiAcquireGlobalLock ( - UINT32 Timeout, + UINT16 Timeout, UINT32 *Handle); ACPI_STATUS Index: contrib/dev/acpica/acstruct.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acstruct.h,v retrieving revision 1.1.1.8 diff -u -r1.1.1.8 acstruct.h --- contrib/dev/acpica/acstruct.h 9 Jul 2002 17:51:23 -0000 1.1.1.8 +++ contrib/dev/acpica/acstruct.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acstruct.h - Internal structs - * $Revision: 19 $ + * $Revision: 20 $ * *****************************************************************************/ @@ -150,6 +150,8 @@ 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; Index: contrib/dev/acpica/actypes.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/actypes.h,v retrieving revision 1.1.1.20 diff -u -r1.1.1.20 actypes.h --- contrib/dev/acpica/actypes.h 4 Oct 2002 20:07:53 -0000 1.1.1.20 +++ contrib/dev/acpica/actypes.h 21 Nov 2002 03:00:23 -0000 @@ -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 @@ #elif ACPI_MACHINE_WIDTH == 16 + /* * 16-bit type definitions */ @@ -224,6 +225,7 @@ #elif ACPI_MACHINE_WIDTH == 32 + /* * 32-bit type definitions (default) */ @@ -259,7 +261,6 @@ /* * Miscellaneous common types */ - typedef UINT32 UINT32_BIT; typedef NATIVE_UINT ACPI_PTRDIFF; typedef char NATIVE_CHAR; @@ -317,7 +318,6 @@ /* * Useful defines */ - #ifdef FALSE #undef FALSE #endif @@ -336,7 +336,6 @@ /* * 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 @@ /* * Constants with special meanings */ - #define ACPI_ROOT_OBJECT (ACPI_HANDLE) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR) @@ -477,7 +475,6 @@ /* * 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 @@ /* - * 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 @@ #define ACPI_TYPE_DDB_HANDLE 0x0F #define ACPI_TYPE_DEBUG_OBJECT 0x10 -#define ACPI_TYPE_MAX 0x10 +#define ACPI_TYPE_EXTERNAL_MAX 0x10 + +/* + * 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 ACPI_TYPE_LOCAL_REGION_FIELD 0x11 +#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 +#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 +#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ +#define ACPI_TYPE_LOCAL_ALIAS 0x15 +#define ACPI_TYPE_LOCAL_NOTIFY 0x16 +#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x17 +#define ACPI_TYPE_LOCAL_RESOURCE 0x18 +#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x19 +#define ACPI_TYPE_LOCAL_SCOPE 0x1A /* 1 Name, multiple ObjectList Nodes */ + +#define ACPI_TYPE_NS_NODE_MAX 0x1A /* Last typecode used within a NS Node */ /* - * 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. - */ -#define INTERNAL_TYPE_BEGIN 0x11 - -#define INTERNAL_TYPE_REGION_FIELD 0x11 -#define INTERNAL_TYPE_BANK_FIELD 0x12 -#define INTERNAL_TYPE_INDEX_FIELD 0x13 -#define INTERNAL_TYPE_REFERENCE 0x14 /* Arg#, Local#, Name, Debug; used only in descriptors */ -#define INTERNAL_TYPE_ALIAS 0x15 -#define INTERNAL_TYPE_NOTIFY 0x16 -#define INTERNAL_TYPE_ADDRESS_HANDLER 0x17 -#define INTERNAL_TYPE_RESOURCE 0x18 -#define INTERNAL_TYPE_RESOURCE_FIELD 0x19 - - -#define INTERNAL_TYPE_NODE_MAX 0x19 - -/* These are pseudo-types because there are never any namespace nodes with these types */ - -#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 + * 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_MAX 0x23 +#define ACPI_TYPE_LOCAL_MAX 0x1C -#define INTERNAL_TYPE_INVALID 0x24 +/* All types above here are invalid */ + +#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 @@ */ #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 @@ /* * Fixed events */ - #define ACPI_EVENT_PMTIMER 0 #define ACPI_EVENT_GLOBAL 1 #define ACPI_EVENT_POWER_BUTTON 2 @@ -634,9 +622,7 @@ /* * GPEs */ - #define ACPI_EVENT_WAKE_ENABLE 0x1 - #define ACPI_EVENT_WAKE_DISABLE 0x1 @@ -669,7 +655,7 @@ #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 @@ #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 @@ /* * List of objects, used as a parameter list for control method evaluation */ - typedef struct AcpiObjList { UINT32 Count; @@ -791,7 +776,6 @@ /* * 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 @@ /* * NameType for AcpiGetName */ - #define ACPI_FULL_PATHNAME 0 #define ACPI_SINGLE_NAME 1 #define ACPI_NAME_TYPE_MAX 1 @@ -816,7 +799,6 @@ /* * 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 @@ /* * System info returned by AcpiGetSystemInfo() */ - typedef struct _AcpiSysInfo { UINT32 AcpiCaVersion; @@ -855,7 +836,6 @@ /* * Various handlers and callback procedures */ - typedef UINT32 (*ACPI_EVENT_HANDLER) ( void *Context); @@ -1092,7 +1072,7 @@ /* * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not - * needed because it has no fields + * needed because it has no fields */ typedef struct Index: contrib/dev/acpica/acutils.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/acutils.h,v retrieving revision 1.5 diff -u -r1.5 acutils.h --- contrib/dev/acpica/acutils.h 4 Oct 2002 20:09:19 -0000 1.5 +++ contrib/dev/acpica/acutils.h 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 146 $ + * $Revision: 148 $ * *****************************************************************************/ @@ -622,6 +622,10 @@ AcpiUtValidInternalObject ( void *Object); +ACPI_OPERAND_OBJECT * +AcpiUtCreateBufferObject ( + ACPI_SIZE BufferSize); + /* * UtRefCnt - Object reference count management @@ -727,6 +731,11 @@ /* * utmisc */ + +void +AcpiUtPrintString ( + char *String, + UINT8 MaxLength); ACPI_STATUS AcpiUtDivide ( Index: contrib/dev/acpica/amlcode.h =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/amlcode.h,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 amlcode.h --- contrib/dev/acpica/amlcode.h 29 Aug 2002 01:51:17 -0000 1.1.1.13 +++ contrib/dev/acpica/amlcode.h 21 Nov 2002 03:00:23 -0000 @@ -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 @@ 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; Index: contrib/dev/acpica/dbcmds.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dbcmds.c,v retrieving revision 1.4 diff -u -r1.4 dbcmds.c --- contrib/dev/acpica/dbcmds.c 4 Oct 2002 20:09:19 -0000 1.4 +++ contrib/dev/acpica/dbcmds.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbcmds - debug commands and output routines - * $Revision: 88 $ + * $Revision: 90 $ * ******************************************************************************/ @@ -412,7 +412,6 @@ return; } - AcpiGbl_StepToNextCall = TRUE; } @@ -1055,7 +1054,7 @@ * * RETURN: None * - * DESCRIPTION: + * DESCRIPTION: Display the resource objects associated with a device. * ******************************************************************************/ @@ -1222,7 +1221,7 @@ Node, ACPI_GET_DESCRIPTOR_TYPE (Node)); } - if (Node->Type > INTERNAL_TYPE_MAX) + if (Node->Type > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf ("Invalid Object Type for Node %p, Type = %X\n", Node, Node->Type); Index: contrib/dev/acpica/dbdisply.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dbdisply.c,v retrieving revision 1.1.1.18 diff -u -r1.1.1.18 dbdisply.c --- contrib/dev/acpica/dbdisply.c 4 Oct 2002 20:07:51 -0000 1.1.1.18 +++ contrib/dev/acpica/dbdisply.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisply - debug display commands - * $Revision: 79 $ + * $Revision: 81 $ * ******************************************************************************/ @@ -413,7 +413,7 @@ if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) { - AcpiOsPrintf ("%p", ObjDesc); + AcpiOsPrintf (" %p", ObjDesc); return; } @@ -456,7 +456,7 @@ default: - AcpiOsPrintf ("%p", ObjDesc); + AcpiOsPrintf (" %p", ObjDesc); break; } } @@ -480,8 +480,8 @@ { - AcpiOsPrintf (" Name %4.4s Type-%s", - Node->Name.Ascii, AcpiUtGetTypeName (Node->Type)); + AcpiOsPrintf (" Name %4.4s", + Node->Name.Ascii); if (Node->Flags & ANOBJ_METHOD_ARG) { @@ -544,7 +544,7 @@ 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 @@ switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: switch (ObjDesc->Reference.Opcode) { Index: contrib/dev/acpica/dbexec.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dbexec.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 dbexec.c --- contrib/dev/acpica/dbexec.c 4 Oct 2002 20:07:51 -0000 1.1.1.16 +++ contrib/dev/acpica/dbexec.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbexec - debugger control method execution - * $Revision: 45 $ + * $Revision: 46 $ * ******************************************************************************/ @@ -500,7 +500,7 @@ 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--; } Index: contrib/dev/acpica/dbfileio.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dbfileio.c,v retrieving revision 1.6 diff -u -r1.6 dbfileio.c --- contrib/dev/acpica/dbfileio.c 29 Aug 2002 01:52:26 -0000 1.6 +++ contrib/dev/acpica/dbfileio.c 21 Nov 2002 03:00:14 -0000 @@ -2,7 +2,7 @@ * * Module Name: dbfileio - Debugger file I/O commands. These can't usually * be used when running the debugger in Ring 0 (Kernel mode) - * $Revision: 68 $ + * $Revision: 69 $ * ******************************************************************************/ @@ -329,6 +329,10 @@ Actual = fread (AmlStart, 1, (size_t) AmlLength, fp); if (Actual == AmlLength) { + /* Now validate the checksum */ + + Status = AcpiTbVerifyTableChecksum (*TablePtr); + return (AE_OK); } @@ -417,6 +421,18 @@ #ifdef ACPI_APPLICATION +/******************************************************************************* + * + * FUNCTION: AcpiDbGetAcpiTable + * + * PARAMETERS: Filname - File where table is located + * + * RETURN: Status + * + * DESCRIPTION: Get an ACPI table from a file + * + ******************************************************************************/ + ACPI_STATUS AcpiDbGetAcpiTable ( NATIVE_CHAR *Filename) @@ -425,6 +441,7 @@ UINT32 TableLength; ACPI_STATUS Status; + /* Open the file */ fp = fopen (Filename, "rb"); @@ -450,6 +467,7 @@ return (AE_OK); } #endif + /******************************************************************************* * Index: contrib/dev/acpica/dbstats.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dbstats.c,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 dbstats.c --- contrib/dev/acpica/dbstats.c 4 Oct 2002 20:07:52 -0000 1.1.1.13 +++ contrib/dev/acpica/dbstats.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbstats - Generation and display of ACPI table statistics - * $Revision: 63 $ + * $Revision: 64 $ * ******************************************************************************/ @@ -179,7 +179,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ AcpiDbEnumerateObject (ObjDesc); Type = Node->Type; - if (Type > INTERNAL_TYPE_NODE_MAX) + if (Type > ACPI_TYPE_NS_NODE_MAX) { AcpiGbl_NodeTypeCountMisc++; } @@ -334,7 +341,7 @@ 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 @@ 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]); Index: contrib/dev/acpica/dbutils.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dbutils.c,v retrieving revision 1.1.1.14 diff -u -r1.1.1.14 dbutils.c --- contrib/dev/acpica/dbutils.c 29 Aug 2002 01:51:15 -0000 1.1.1.14 +++ contrib/dev/acpica/dbutils.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbutils - AML debugger utilities - * $Revision: 56 $ + * $Revision: 57 $ * ******************************************************************************/ @@ -261,7 +261,7 @@ break; - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[Object Reference] = %p\n", ObjDesc->Reference.Handle); break; Index: contrib/dev/acpica/dmbuffer.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dmbuffer.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 dmbuffer.c --- contrib/dev/acpica/dmbuffer.c 29 Aug 2002 01:51:15 -0000 1.1.1.2 +++ contrib/dev/acpica/dmbuffer.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmbuffer - AML disassembler, buffer and string support - * $Revision: 7 $ + * $Revision: 8 $ * ******************************************************************************/ @@ -221,7 +221,7 @@ case ACPI_DASM_STRING: AcpiDmIndent (Info->Level); - AcpiDmString ((char *) ByteData); + AcpiUtPrintString ((char *) ByteData, ACPI_UINT8_MAX); AcpiOsPrintf ("\n"); break; @@ -377,96 +377,6 @@ } return (TRUE); -} - - -/******************************************************************************* - * - * 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 ("\""); } Index: contrib/dev/acpica/dmopcode.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dmopcode.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 dmopcode.c --- contrib/dev/acpica/dmopcode.c 29 Aug 2002 01:51:15 -0000 1.1.1.2 +++ contrib/dev/acpica/dmopcode.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmopcode - AML disassembler, specific AML opcodes - * $Revision: 77 $ + * $Revision: 79 $ * ******************************************************************************/ @@ -458,7 +458,7 @@ case AML_STRING_OP: - AcpiDmString (Op->Common.Value.String); + AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT8_MAX); break; @@ -551,10 +551,11 @@ 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; Index: contrib/dev/acpica/dmutils.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dmutils.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 dmutils.c --- contrib/dev/acpica/dmutils.c 29 Aug 2002 01:51:15 -0000 1.1.1.2 +++ contrib/dev/acpica/dmutils.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmutils - AML disassembler utilities - * $Revision: 4 $ + * $Revision: 5 $ * ******************************************************************************/ @@ -285,6 +285,68 @@ "Transfer16", "InvalidSize" }; + + +/******************************************************************************* + * + * 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; + } +} /******************************************************************************* Index: contrib/dev/acpica/dsfield.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dsfield.c,v retrieving revision 1.1.1.12 diff -u -r1.1.1.12 dsfield.c --- contrib/dev/acpica/dsfield.c 4 Oct 2002 20:07:53 -0000 1.1.1.12 +++ contrib/dev/acpica/dsfield.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsfield - Dispatcher field routines - * $Revision: 68 $ + * $Revision: 69 $ * *****************************************************************************/ @@ -200,7 +200,7 @@ * 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 @@ /* 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 @@ { 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 @@ } } - /* 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 @@ /* 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 @@ 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 @@ /* 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); Index: contrib/dev/acpica/dsmethod.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dsmethod.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 dsmethod.c --- contrib/dev/acpica/dsmethod.c 29 Aug 2002 01:51:17 -0000 1.1.1.15 +++ contrib/dev/acpica/dsmethod.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsmethod - Parser/Interpreter interface - control method parsing - * $Revision: 88 $ + * $Revision: 89 $ * *****************************************************************************/ @@ -320,7 +320,7 @@ * interpreter if we block */ Status = AcpiExSystemWaitSemaphore (ObjDesc->Method.Semaphore, - WAIT_FOREVER); + ACPI_WAIT_FOREVER); } /* Index: contrib/dev/acpica/dsmthdat.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dsmthdat.c,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 dsmthdat.c --- contrib/dev/acpica/dsmthdat.c 29 Aug 2002 01:51:17 -0000 1.1.1.13 +++ contrib/dev/acpica/dsmthdat.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 63 $ + * $Revision: 64 $ * ******************************************************************************/ @@ -722,7 +722,7 @@ * 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, Index: contrib/dev/acpica/dsobject.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dsobject.c,v retrieving revision 1.1.1.19 diff -u -r1.1.1.19 dsobject.c --- contrib/dev/acpica/dsobject.c 4 Oct 2002 20:07:54 -0000 1.1.1.19 +++ contrib/dev/acpica/dsobject.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines - * $Revision: 108 $ + * $Revision: 110 $ * *****************************************************************************/ @@ -837,7 +837,7 @@ 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 @@ break; - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: switch (OpInfo->Type) { Index: contrib/dev/acpica/dsopcode.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dsopcode.c,v retrieving revision 1.1.1.18 diff -u -r1.1.1.18 dsopcode.c --- contrib/dev/acpica/dsopcode.c 4 Oct 2002 20:07:54 -0000 1.1.1.18 +++ contrib/dev/acpica/dsopcode.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ * * Module Name: dsopcode - Dispatcher Op Region support and handling of * "control" opcodes - * $Revision: 82 $ + * $Revision: 83 $ * *****************************************************************************/ @@ -1158,7 +1158,7 @@ * 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); Index: contrib/dev/acpica/dsutils.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dsutils.c,v retrieving revision 1.1.1.17 diff -u -r1.1.1.17 dsutils.c --- contrib/dev/acpica/dsutils.c 4 Oct 2002 20:07:54 -0000 1.1.1.17 +++ contrib/dev/acpica/dsutils.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsutils - Dispatcher utilities - * $Revision: 95 $ + * $Revision: 97 $ * ******************************************************************************/ @@ -379,6 +379,46 @@ 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 @@ /* 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); } Index: contrib/dev/acpica/dswexec.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dswexec.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 dswexec.c --- contrib/dev/acpica/dswexec.c 29 Aug 2002 01:51:19 -0000 1.1.1.16 +++ contrib/dev/acpica/dswexec.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ * * Module Name: dswexec - Dispatcher method execution callbacks; * dispatch to interpreter. - * $Revision: 95 $ + * $Revision: 96 $ * *****************************************************************************/ @@ -443,7 +443,6 @@ UINT32 OpClass; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *FirstArg; - UINT32 i; ACPI_FUNCTION_TRACE_PTR ("DsExecEndOp", WalkState); @@ -526,16 +525,7 @@ /* 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 @@ Status = AcpiDsResolveOperands (WalkState); if (ACPI_FAILURE (Status)) { + /* On error, clear all resolved operands */ + + AcpiDsClearOperands (WalkState); break; } Index: contrib/dev/acpica/dswload.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dswload.c,v retrieving revision 1.1.1.17 diff -u -r1.1.1.17 dswload.c --- contrib/dev/acpica/dswload.c 4 Oct 2002 20:07:54 -0000 1.1.1.17 +++ contrib/dev/acpica/dswload.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 75 $ + * $Revision: 78 $ * *****************************************************************************/ @@ -248,54 +248,30 @@ 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))) - { - Flags |= ACPI_NS_ERROR_IF_FOUND; - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Cannot already exist\n")); - } - else + switch (WalkState->Opcode) { - 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 @@ WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; break; - default: + default: /* All other types are an error */ @@ -334,8 +310,56 @@ 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 @@ "State=%p Op=%p Type=%X\n", WalkState, Op, ObjectType)); - if (WalkState->Opcode == AML_FIELD_OP || - WalkState->Opcode == AML_BANK_FIELD_OP || - WalkState->Opcode == AML_INDEX_FIELD_OP) + switch (WalkState->Opcode) { + case AML_FIELD_OP: + case AML_BANK_FIELD_OP: + case AML_INDEX_FIELD_OP: + Node = NULL; Status = AE_OK; - } - else if (WalkState->Opcode == AML_INT_NAMEPATH_OP) - { + break; + + case AML_INT_NAMEPATH_OP: + /* * The NamePath is an object reference to an existing object. Don't enter the * name into the namespace, but look it up for use later */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); - } - else - { - /* All other opcodes */ - - if (Op && Op->Common.Node) - { - /* This op/node was previously entered into the namespace */ - - Node = Op->Common.Node; - - if (AcpiNsOpensScope (ObjectType)) - { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } + break; - } - return_ACPI_STATUS (AE_OK); - } + case AML_SCOPE_OP: /* - * Enter the named type into the internal namespace. We enter the name - * as we go downward in the parse tree. Any necessary subobjects that involve - * arguments to the opcode must be created as we go back up the parse tree later. + * The Path is an object reference to an existing object. Don't enter the + * name into the namespace, but look it up for use later */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, WalkState, &(Node)); - } - - if (ACPI_FAILURE (Status)) - { - ACPI_REPORT_NSERROR (BufferPtr, Status); - return_ACPI_STATUS (Status); - } - - /* - * For the scope op, we must check to make sure that the target is - * one of the opcodes that actually opens a scope - */ - if (WalkState->Opcode == AML_SCOPE_OP) - { + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); + if (ACPI_FAILURE (Status)) + { + ACPI_REPORT_NSERROR (BufferPtr, Status); + return_ACPI_STATUS (Status); + } + /* + * We must check to make sure that the target is + * one of the opcodes that actually opens a scope + */ switch (Node->Type) { - case ACPI_TYPE_ANY: /* Scope nodes are untyped (ANY) */ + case ACPI_TYPE_LOCAL_SCOPE: /* Scope */ case ACPI_TYPE_DEVICE: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: @@ -626,7 +628,7 @@ WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; break; - default: + default: /* All other types are an error */ @@ -635,7 +637,46 @@ 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) { Index: contrib/dev/acpica/dswscope.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dswscope.c,v retrieving revision 1.1.1.10 diff -u -r1.1.1.10 dswscope.c --- contrib/dev/acpica/dswscope.c 4 Oct 2002 20:07:54 -0000 1.1.1.10 +++ contrib/dev/acpica/dswscope.c 21 Nov 2002 03:00:23 -0000 @@ -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 @@ ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; + ACPI_GENERIC_STATE *OldScopeInfo; ACPI_FUNCTION_TRACE ("DsScopeStackPush"); @@ -196,7 +196,7 @@ /* 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 @@ 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 @@ ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; + ACPI_GENERIC_STATE *NewScopeInfo; ACPI_FUNCTION_TRACE ("DsScopeStackPop"); @@ -260,8 +285,27 @@ 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); Index: contrib/dev/acpica/dswstate.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/dswstate.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 dswstate.c --- contrib/dev/acpica/dswstate.c 29 Aug 2002 01:51:20 -0000 1.1.1.15 +++ contrib/dev/acpica/dswstate.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswstate - Dispatcher parse tree walk management routines - * $Revision: 68 $ + * $Revision: 70 $ * *****************************************************************************/ @@ -273,7 +273,7 @@ ACPI_OPERAND_OBJECT **Object, ACPI_WALK_STATE *WalkState) { - UINT32 Index; + NATIVE_UINT Index; ACPI_GENERIC_STATE *State; @@ -308,7 +308,7 @@ 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 @@ * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: Push an object onto the WalkState result stack. * ******************************************************************************/ @@ -492,7 +492,7 @@ * * RETURN: Status * - * DESCRIPTION: + * DESCRIPTION: Pop an object off of the WalkState result stack. * ******************************************************************************/ Index: contrib/dev/acpica/evevent.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/evevent.c,v retrieving revision 1.1.1.19 diff -u -r1.1.1.19 evevent.c --- contrib/dev/acpica/evevent.c 4 Oct 2002 20:07:52 -0000 1.1.1.19 +++ contrib/dev/acpica/evevent.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evevent - Fixed and General Purpose Even handling and dispatch - * $Revision: 92 $ + * $Revision: 96 $ * *****************************************************************************/ @@ -446,44 +446,63 @@ 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 @@ 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 @@ * 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 @@ GpeRegister++; } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d: %X registers at %8.8X%8.8X\n", - (INT32) GpeBlock, AcpiGbl_GpeBlockInfo[0].RegisterCount, - ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)), - ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)))); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d Range GPE #%2.2X to GPE #%2.2X\n", - (INT32) GpeBlock, - AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber, - AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber + - ((AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount * 8) -1))); + if (i) + { + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d: %X registers at %8.8X%8.8X\n", + (INT32) GpeBlock, AcpiGbl_GpeBlockInfo[0].RegisterCount, + ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)), + ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)))); + + ACPI_REPORT_INFO (("GPE Block%d defined as GPE%d to GPE%d\n", + (INT32) GpeBlock, + (UINT32) AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber, + (UINT32) (AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber + + ((AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount * 8) -1)))); + } } return_ACPI_STATUS (AE_OK); @@ -925,7 +945,7 @@ 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 @@ 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); } Index: contrib/dev/acpica/evmisc.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/evmisc.c,v retrieving revision 1.1.1.17 diff -u -r1.1.1.17 evmisc.c --- contrib/dev/acpica/evmisc.c 4 Oct 2002 20:07:52 -0000 1.1.1.17 +++ contrib/dev/acpica/evmisc.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evmisc - Miscellaneous event manager support functions - * $Revision: 57 $ + * $Revision: 59 $ * *****************************************************************************/ @@ -331,7 +331,8 @@ { /* 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 @@ ACPI_STATUS AcpiEvAcquireGlobalLock ( - UINT32 Timeout) + UINT16 Timeout) { ACPI_STATUS Status = AE_OK; BOOLEAN Acquired = FALSE; @@ -583,7 +584,7 @@ { /* 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 @@ * 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. Index: contrib/dev/acpica/evxface.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/evxface.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 evxface.c --- contrib/dev/acpica/evxface.c 29 Aug 2002 01:51:16 -0000 1.1.1.15 +++ contrib/dev/acpica/evxface.c 21 Nov 2002 03:00:14 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxface - External interfaces for ACPI events - * $Revision: 130 $ + * $Revision: 132 $ * *****************************************************************************/ @@ -410,7 +410,7 @@ /* Install the handler */ - NotifyObj = AcpiUtCreateInternalObject (INTERNAL_TYPE_NOTIFY); + NotifyObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_NOTIFY); if (!NotifyObj) { Status = AE_NO_MEMORY; @@ -756,7 +756,7 @@ ACPI_STATUS AcpiAcquireGlobalLock ( - UINT32 Timeout, + UINT16 Timeout, UINT32 *Handle) { ACPI_STATUS Status; Index: contrib/dev/acpica/evxfregn.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/evxfregn.c,v retrieving revision 1.1.1.12 diff -u -r1.1.1.12 evxfregn.c --- contrib/dev/acpica/evxfregn.c 9 Jul 2002 17:51:21 -0000 1.1.1.12 +++ contrib/dev/acpica/evxfregn.c 21 Nov 2002 03:00:14 -0000 @@ -2,7 +2,7 @@ * * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and * Address Spaces. - * $Revision: 50 $ + * $Revision: 52 $ * *****************************************************************************/ @@ -317,8 +317,8 @@ } 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 @@ * 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; Index: contrib/dev/acpica/exconfig.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exconfig.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exconfig.c --- contrib/dev/acpica/exconfig.c 30 Jul 2002 19:33:35 -0000 1.1.1.16 +++ contrib/dev/acpica/exconfig.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes) - * $Revision: 67 $ + * $Revision: 69 $ * *****************************************************************************/ @@ -160,7 +160,7 @@ /* 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 @@ 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 @@ 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 @@ */ 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); } Index: contrib/dev/acpica/exconvrt.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exconvrt.c,v retrieving revision 1.1.1.11 diff -u -r1.1.1.11 exconvrt.c --- contrib/dev/acpica/exconvrt.c 4 Oct 2002 20:07:54 -0000 1.1.1.11 +++ contrib/dev/acpica/exconvrt.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exconvrt - Object conversion routines - * $Revision: 39 $ + * $Revision: 44 $ * *****************************************************************************/ @@ -246,10 +246,15 @@ 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 @@ switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { + case ACPI_TYPE_BUFFER: + + /* No conversion necessary */ + + *ResultDesc = ObjDesc; + return_ACPI_STATUS (AE_OK); + + case ACPI_TYPE_INTEGER: /* - * Create a new Buffer object + * Create a new Buffer object. + * Need enough space for one integer */ - RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); + RetDesc = AcpiUtCreateBufferObject (AcpiGbl_IntegerByteWidth); if (!RetDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - /* Need enough space for one integer */ - - NewBuf = ACPI_MEM_CALLOCATE (AcpiGbl_IntegerByteWidth); - if (!NewBuf) - { - ACPI_REPORT_ERROR - (("ExConvertToBuffer: Buffer allocation failure\n")); - AcpiUtRemoveReference (RetDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - /* Copy the integer to the buffer */ + NewBuf = RetDesc->Buffer.Pointer; for (i = 0; i < AcpiGbl_IntegerByteWidth; i++) { NewBuf[i] = (UINT8) (ObjDesc->Integer.Value >> (i * 8)); } - - /* Complete buffer object initialization */ - - RetDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; - RetDesc->Buffer.Pointer = NewBuf; - RetDesc->Buffer.Length = AcpiGbl_IntegerByteWidth; - - /* Return the new buffer descriptor */ - - *ResultDesc = RetDesc; break; case ACPI_TYPE_STRING: + /* * Create a new Buffer object + * Size will be the string length */ - RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); + RetDesc = AcpiUtCreateBufferObject (ObjDesc->String.Length); if (!RetDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - /* Need enough space for one integer */ - - NewBuf = ACPI_MEM_CALLOCATE (ObjDesc->String.Length); - if (!NewBuf) - { - ACPI_REPORT_ERROR - (("ExConvertToBuffer: Buffer allocation failure\n")); - AcpiUtRemoveReference (RetDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer, ObjDesc->String.Length); - RetDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; - RetDesc->Buffer.Pointer = NewBuf; - RetDesc->Buffer.Length = ObjDesc->String.Length; + /* Copy the string to the buffer */ - /* Return the new buffer descriptor */ - - *ResultDesc = RetDesc; - break; - - - case ACPI_TYPE_BUFFER: - *ResultDesc = ObjDesc; + NewBuf = RetDesc->Buffer.Pointer; + ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer, + ObjDesc->String.Length); break; @@ -377,7 +354,22 @@ /* 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 @@ 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 @@ } RetDesc->Buffer.Pointer = NewBuf; - - /* Return the new buffer descriptor */ - - if (*ResultDesc == ObjDesc) - { - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiUtRemoveReference (ObjDesc); - } - } - - *ResultDesc = RetDesc; break; @@ -641,42 +636,29 @@ NewBuf [Index-1] = 0; RetDesc->Buffer.Pointer = NewBuf; - RetDesc->String.Length = ACPI_STRLEN ((char *) NewBuf); - - /* Return the new buffer descriptor */ - - if (*ResultDesc == ObjDesc) - { - if (WalkState->Opcode != AML_STORE_OP) - { - AcpiUtRemoveReference (ObjDesc); - } - } - - *ResultDesc = RetDesc; + RetDesc->String.Length = (UINT32) ACPI_STRLEN ((char *) NewBuf); break; - case ACPI_TYPE_STRING: + default: + return_ACPI_STATUS (AE_TYPE); + } - if (MaxLength >= ObjDesc->String.Length) - { - *ResultDesc = ObjDesc; - } - else + /* + * If we are about to overwrite the original object on the operand stack, + * we must remove a reference on the original object because we are + * essentially removing it from the stack. + */ + if (*ResultDesc == ObjDesc) + { + if (WalkState->Opcode != AML_STORE_OP) { - /* Must copy the string first and then truncate it */ - - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); + AcpiUtRemoveReference (ObjDesc); } - break; - - - default: - return_ACPI_STATUS (AE_TYPE); } + *ResultDesc = RetDesc; return_ACPI_STATUS (AE_OK); } @@ -724,7 +706,7 @@ switch (DestinationType) { - case INTERNAL_TYPE_REGION_FIELD: + case ACPI_TYPE_LOCAL_REGION_FIELD: /* * Named field can always handle conversions */ @@ -751,8 +733,8 @@ { 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. Index: contrib/dev/acpica/excreate.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/excreate.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 excreate.c --- contrib/dev/acpica/excreate.c 4 Oct 2002 20:07:54 -0000 1.1.1.15 +++ contrib/dev/acpica/excreate.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: excreate - Named object creation - * $Revision: 94 $ + * $Revision: 97 $ * *****************************************************************************/ @@ -148,7 +148,7 @@ { ACPI_NAMESPACE_NODE *TargetNode; ACPI_NAMESPACE_NODE *AliasNode; - ACPI_STATUS Status; + ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE ("ExCreateAlias"); @@ -159,7 +159,7 @@ 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 @@ * 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 @@ /* 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 @@ /* 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: Index: contrib/dev/acpica/exdump.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exdump.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exdump.c --- contrib/dev/acpica/exdump.c 4 Oct 2002 20:07:54 -0000 1.1.1.16 +++ contrib/dev/acpica/exdump.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exdump - Interpreter debug output routines - * $Revision: 160 $ + * $Revision: 163 $ * *****************************************************************************/ @@ -150,7 +150,6 @@ { UINT8 *Buf = NULL; UINT32 Length; - UINT32 i; ACPI_OPERAND_OBJECT **Element; UINT16 ElementIndex; @@ -194,7 +193,7 @@ switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: switch (ObjDesc->Reference.Opcode) { @@ -320,22 +319,6 @@ 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 @@ 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 @@ break; - case INTERNAL_TYPE_INDEX_FIELD: + case ACPI_TYPE_LOCAL_INDEX_FIELD: AcpiOsPrintf ("IndexField\n"); break; @@ -722,7 +700,10 @@ 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 @@ AcpiExOutInteger ("Length", ObjDesc->Buffer.Length); AcpiExOutPointer ("Pointer", ObjDesc->Buffer.Pointer); + ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); break; @@ -831,9 +813,9 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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", Index: contrib/dev/acpica/exfield.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exfield.c,v retrieving revision 1.1.1.12 diff -u -r1.1.1.12 exfield.c --- contrib/dev/acpica/exfield.c 9 Jul 2002 17:51:25 -0000 1.1.1.12 +++ contrib/dev/acpica/exfield.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exfield - ACPI AML (p-code) execution - field manipulation - * $Revision: 112 $ + * $Revision: 115 $ * *****************************************************************************/ @@ -179,6 +179,33 @@ } } } + 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 @@ { /* 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 @@ 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 @@ 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 @@ void *Buffer; void *NewBuffer; BOOLEAN Locked; + ACPI_OPERAND_OBJECT *BufferDesc; ACPI_FUNCTION_TRACE_PTR ("ExWriteDataToField", ObjDesc); @@ -315,6 +330,54 @@ } } } + 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 @@ 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 */ Index: contrib/dev/acpica/exfldio.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exfldio.c,v retrieving revision 1.13 diff -u -r1.13 exfldio.c --- contrib/dev/acpica/exfldio.c 29 Aug 2002 01:52:26 -0000 1.13 +++ contrib/dev/acpica/exfldio.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exfldio - Aml Field I/O - * $Revision: 88 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -157,6 +157,8 @@ RgnDesc = ObjDesc->CommonField.RegionObj; + /* We must have a valid region */ + if (ACPI_GET_OBJECT_TYPE (RgnDesc) != ACPI_TYPE_REGION) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n", @@ -179,6 +181,13 @@ } } + if (RgnDesc->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) + { + /* SMBus has a non-linear address space */ + + return_ACPI_STATUS (AE_OK); + } + /* * Validate the request. The entire request from the byte offset for a * length of one field datum (access width) must fit within the region. @@ -225,8 +234,10 @@ * PARAMETERS: *ObjDesc - Field to be read * FieldDatumByteOffset - Byte offset of this datum within the * parent field - * *Value - Where to store value (must be 32 bits) - * ReadWrite - Read or Write flag + * *Value - Where to store value (must at least + * the size of ACPI_INTEGER) + * Function - Read or Write flag plus other region- + * dependent flags * * RETURN: Status * @@ -239,7 +250,7 @@ ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, ACPI_INTEGER *Value, - UINT32 ReadWrite) + UINT32 Function) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *RgnDesc; @@ -249,6 +260,16 @@ ACPI_FUNCTION_TRACE ("ExAccessRegion"); + /* + * Ensure that the region operands are fully evaluated and verify + * the validity of the request + */ + Status = AcpiExSetupRegion (ObjDesc, FieldDatumByteOffset); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + /* * The physical address of this field datum is: * @@ -261,7 +282,7 @@ + ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset; - if (ReadWrite == ACPI_READ) + if ((Function & ACPI_IO_MASK) == ACPI_READ) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "[READ]")); } @@ -281,7 +302,7 @@ /* Invoke the appropriate AddressSpace/OpRegion handler */ - Status = AcpiEvAddressSpaceDispatch (RgnDesc, ReadWrite, + Status = AcpiEvAddressSpaceDispatch (RgnDesc, Function, Address, ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); if (ACPI_FAILURE (Status)) @@ -293,7 +314,6 @@ AcpiUtGetRegionName (RgnDesc->Region.SpaceId), RgnDesc->Region.SpaceId)); } - else if (Status == AE_NOT_EXIST) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, @@ -450,7 +470,7 @@ break; - case INTERNAL_TYPE_BANK_FIELD: + case ACPI_TYPE_LOCAL_BANK_FIELD: /* Ensure that the BankValue is not beyond the capacity of the register */ @@ -480,23 +500,17 @@ /*lint -fallthrough */ - case INTERNAL_TYPE_REGION_FIELD: + case ACPI_TYPE_LOCAL_REGION_FIELD: /* * For simple RegionFields, we just directly access the owning * Operation Region. */ - Status = AcpiExSetupRegion (ObjDesc, FieldDatumByteOffset); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value, ReadWrite); break; - case INTERNAL_TYPE_INDEX_FIELD: + case ACPI_TYPE_LOCAL_INDEX_FIELD: /* Ensure that the IndexValue is not beyond the capacity of the register */ Index: contrib/dev/acpica/exmisc.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exmisc.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exmisc.c --- contrib/dev/acpica/exmisc.c 4 Oct 2002 20:07:54 -0000 1.1.1.16 +++ contrib/dev/acpica/exmisc.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes - * $Revision: 109 $ + * $Revision: 112 $ * *****************************************************************************/ @@ -161,7 +161,7 @@ { 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 @@ /* 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 @@ 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 @@ 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 @@ 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 @@ ThisInteger >>= 8; } - /* Complete the buffer object initialization */ - - ReturnDesc->Common.Flags = AOPOBJ_DATA_VALID; - ReturnDesc->Buffer.Pointer = (UINT8 *) NewBuf; break; @@ -447,21 +413,15 @@ /* 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 @@ 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; Index: contrib/dev/acpica/exmutex.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exmutex.c,v retrieving revision 1.1.1.5 diff -u -r1.1.1.5 exmutex.c --- contrib/dev/acpica/exmutex.c 9 Jul 2002 17:51:25 -0000 1.1.1.5 +++ contrib/dev/acpica/exmutex.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exmutex - ASL Mutex Acquire/Release functions - * $Revision: 13 $ + * $Revision: 16 $ * *****************************************************************************/ @@ -229,24 +229,38 @@ 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 @@ 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 @@ */ 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); } Index: contrib/dev/acpica/exnames.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exnames.c,v retrieving revision 1.1.1.10 diff -u -r1.1.1.10 exnames.c --- contrib/dev/acpica/exnames.c 9 Jul 2002 17:51:25 -0000 1.1.1.10 +++ contrib/dev/acpica/exnames.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exnames - interpreter/scanner name load/execute - * $Revision: 91 $ + * $Revision: 92 $ * *****************************************************************************/ @@ -354,9 +354,9 @@ 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 */ Index: contrib/dev/acpica/exoparg1.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exoparg1.c,v retrieving revision 1.1.1.8 diff -u -r1.1.1.8 exoparg1.c --- contrib/dev/acpica/exoparg1.c 4 Oct 2002 20:07:54 -0000 1.1.1.8 +++ contrib/dev/acpica/exoparg1.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exoparg1 - AML execution - opcodes with 1 argument - * $Revision: 143 $ + * $Revision: 146 $ * *****************************************************************************/ @@ -453,12 +453,6 @@ * 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 @@ 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 @@ Cleanup: - WalkState->ResultObj = ReturnDesc; + if (!WalkState->ResultObj) + { + WalkState->ResultObj = ReturnDesc; + } /* Delete return object on error */ @@ -767,7 +769,7 @@ { switch (ACPI_GET_OBJECT_TYPE (Operand[0])) { - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: /* * This is a DerefOf (LocalX | ArgX) * Index: contrib/dev/acpica/exoparg2.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exoparg2.c,v retrieving revision 1.1.1.8 diff -u -r1.1.1.8 exoparg2.c --- contrib/dev/acpica/exoparg2.c 4 Oct 2002 20:07:54 -0000 1.1.1.8 +++ contrib/dev/acpica/exoparg2.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exoparg2 - AML execution - opcodes with 2 arguments - * $Revision: 111 $ + * $Revision: 115 $ * *****************************************************************************/ @@ -344,11 +344,11 @@ 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 @@ /* Set the string length */ - ReturnDesc->String.Length = Length; + ReturnDesc->String.Length = (UINT32) Length; break; @@ -507,7 +507,7 @@ /* 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 @@ 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 @@ 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 @@ goto Cleanup; } - WalkState->ResultObj = ReturnDesc; + if (!WalkState->ResultObj) + { + WalkState->ResultObj = ReturnDesc; + } } Index: contrib/dev/acpica/exoparg3.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exoparg3.c,v retrieving revision 1.1.1.4 diff -u -r1.1.1.4 exoparg3.c --- contrib/dev/acpica/exoparg3.c 9 Jul 2002 17:51:25 -0000 1.1.1.4 +++ contrib/dev/acpica/exoparg3.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exoparg3 - AML execution - opcodes with 3 arguments - * $Revision: 14 $ + * $Revision: 15 $ * *****************************************************************************/ @@ -327,7 +327,10 @@ /* Set the return object and exit */ - WalkState->ResultObj = ReturnDesc; + if (!WalkState->ResultObj) + { + WalkState->ResultObj = ReturnDesc; + } return_ACPI_STATUS (Status); } Index: contrib/dev/acpica/exprep.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exprep.c,v retrieving revision 1.1.1.17 diff -u -r1.1.1.17 exprep.c --- contrib/dev/acpica/exprep.c 29 Aug 2002 01:51:20 -0000 1.1.1.17 +++ contrib/dev/acpica/exprep.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities - * $Revision: 119 $ + * $Revision: 121 $ * *****************************************************************************/ @@ -205,28 +205,24 @@ 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 @@ /* Parameter validation */ - if (Info->FieldType != INTERNAL_TYPE_INDEX_FIELD) + if (Info->FieldType != ACPI_TYPE_LOCAL_INDEX_FIELD) { if (!Info->RegionNode) { @@ -456,7 +452,7 @@ switch (Info->FieldType) { - case INTERNAL_TYPE_REGION_FIELD: + case ACPI_TYPE_LOCAL_REGION_FIELD: ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode); @@ -471,7 +467,7 @@ 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 @@ break; - case INTERNAL_TYPE_INDEX_FIELD: + case ACPI_TYPE_LOCAL_INDEX_FIELD: ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject (Info->RegisterNode); ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject (Info->DataRegisterNode); Index: contrib/dev/acpica/exresnte.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exresnte.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exresnte.c --- contrib/dev/acpica/exresnte.c 4 Oct 2002 20:07:54 -0000 1.1.1.16 +++ contrib/dev/acpica/exresnte.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresnte - AML Interpreter object resolution - * $Revision: 59 $ + * $Revision: 61 $ * *****************************************************************************/ @@ -177,10 +177,10 @@ 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 @@ 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 @@ 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 */ Index: contrib/dev/acpica/exresolv.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exresolv.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exresolv.c --- contrib/dev/acpica/exresolv.c 4 Oct 2002 20:07:55 -0000 1.1.1.16 +++ contrib/dev/acpica/exresolv.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresolv - AML Interpreter object resolution - * $Revision: 116 $ + * $Revision: 117 $ * *****************************************************************************/ @@ -230,7 +230,7 @@ switch (ACPI_GET_OBJECT_TYPE (StackDesc)) { - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: Opcode = StackDesc->Reference.Opcode; @@ -365,9 +365,9 @@ * 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 @@ ACPI_OBJECT_TYPE Type; - ACPI_FUNCTION_TRACE ("ExGetObjectType"); + ACPI_FUNCTION_TRACE ("AcpiExResolveMultiple"); /* @@ -421,7 +421,7 @@ * 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,11 +540,18 @@ 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: Index: contrib/dev/acpica/exresop.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exresop.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exresop.c --- contrib/dev/acpica/exresop.c 4 Oct 2002 20:07:55 -0000 1.1.1.16 +++ contrib/dev/acpica/exresop.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresop - AML Interpreter operand/object resolution - * $Revision: 58 $ + * $Revision: 60 $ * *****************************************************************************/ @@ -157,7 +157,7 @@ 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 @@ /* 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 @@ 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 @@ 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 @@ * -- 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ case ACPI_TYPE_PACKAGE: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: /* Valid operand */ break; Index: contrib/dev/acpica/exstore.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exstore.c,v retrieving revision 1.1.1.18 diff -u -r1.1.1.18 exstore.c --- contrib/dev/acpica/exstore.c 4 Oct 2002 20:07:55 -0000 1.1.1.18 +++ contrib/dev/acpica/exstore.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exstore - AML Interpreter object store support - * $Revision: 172 $ + * $Revision: 174 $ * *****************************************************************************/ @@ -175,7 +175,7 @@ { /* * 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 @@ switch (ACPI_GET_OBJECT_TYPE (DestDesc)) { - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: break; case ACPI_TYPE_INTEGER: @@ -534,14 +534,14 @@ 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; Index: contrib/dev/acpica/exstoren.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exstoren.c,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 exstoren.c --- contrib/dev/acpica/exstoren.c 4 Oct 2002 20:07:55 -0000 1.1.1.13 +++ contrib/dev/acpica/exstoren.c 21 Nov 2002 03:00:23 -0000 @@ -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 @@ 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 @@ * 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 @@ break; - case INTERNAL_TYPE_ALIAS: + case ACPI_TYPE_LOCAL_ALIAS: /* * Aliases are resolved by AcpiExPrepOperands Index: contrib/dev/acpica/exstorob.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exstorob.c,v retrieving revision 1.1.1.14 diff -u -r1.1.1.14 exstorob.c --- contrib/dev/acpica/exstorob.c 4 Oct 2002 20:07:55 -0000 1.1.1.14 +++ contrib/dev/acpica/exstorob.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exstorob - AML Interpreter object store support, store to object - * $Revision: 45 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -241,7 +241,7 @@ * 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 Index: contrib/dev/acpica/exsystem.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exsystem.c,v retrieving revision 1.5 diff -u -r1.5 exsystem.c --- contrib/dev/acpica/exsystem.c 29 Aug 2002 01:52:26 -0000 1.5 +++ contrib/dev/acpica/exsystem.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exsystem - Interface to OS services - * $Revision: 73 $ + * $Revision: 74 $ * *****************************************************************************/ @@ -143,7 +143,7 @@ ACPI_STATUS AcpiExSystemWaitSemaphore ( ACPI_HANDLE Semaphore, - UINT32 Timeout) + UINT16 Timeout) { ACPI_STATUS Status; ACPI_STATUS Status2; @@ -300,12 +300,12 @@ */ if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore) { - Status = AcpiEvAcquireGlobalLock ((UINT32) TimeDesc->Integer.Value); + Status = AcpiEvAcquireGlobalLock ((UINT16) TimeDesc->Integer.Value); return_ACPI_STATUS (Status); } Status = AcpiExSystemWaitSemaphore (ObjDesc->Mutex.Semaphore, - (UINT32) TimeDesc->Integer.Value); + (UINT16) TimeDesc->Integer.Value); return_ACPI_STATUS (Status); } @@ -415,7 +415,7 @@ if (ObjDesc) { Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.Semaphore, - (UINT32) TimeDesc->Integer.Value); + (UINT16) TimeDesc->Integer.Value); } return_ACPI_STATUS (Status); Index: contrib/dev/acpica/exutils.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/exutils.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 exutils.c --- contrib/dev/acpica/exutils.c 29 Aug 2002 01:51:21 -0000 1.1.1.16 +++ contrib/dev/acpica/exutils.c 21 Nov 2002 03:00:23 -0000 @@ -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 @@ { /* 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 @@ 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); Index: contrib/dev/acpica/hwsleep.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/hwsleep.c,v retrieving revision 1.7 diff -u -r1.7 hwsleep.c --- contrib/dev/acpica/hwsleep.c 29 Aug 2002 01:52:26 -0000 1.7 +++ contrib/dev/acpica/hwsleep.c 21 Nov 2002 03:00:23 -0000 @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 46 $ + * $Revision: 47 $ * *****************************************************************************/ @@ -431,6 +431,12 @@ /* Spin until we wake */ } while (!InValue); + + Status = AcpiSetRegister (ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } return_ACPI_STATUS (AE_OK); } Index: contrib/dev/acpica/nsaccess.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsaccess.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 nsaccess.c --- contrib/dev/acpica/nsaccess.c 29 Aug 2002 01:51:21 -0000 1.1.1.15 +++ contrib/dev/acpica/nsaccess.c 21 Nov 2002 03:00:24 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsaccess - Top-level functions for accessing ACPI namespace - * $Revision: 161 $ + * $Revision: 165 $ * ******************************************************************************/ @@ -241,7 +241,7 @@ /* * 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 @@ case ACPI_TYPE_MUTEX: + ObjDesc->Mutex.Node = NewNode; ObjDesc->Mutex.SyncLevel = (UINT16) ACPI_STRTOUL (InitVal->Val, NULL, 10); @@ -349,6 +350,7 @@ 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 @@ } } - /* - * 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 @@ /* 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 @@ /* Backup to the parent node */ + NumCarats++; ThisNode = AcpiNsGetParentNode (ThisNode); if (!ThisNode) { @@ -515,7 +499,8 @@ 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 @@ * 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 @@ CurrentNode)); } + *ReturnNode = ThisNode; return_ACPI_STATUS (Status); } @@ -661,28 +648,25 @@ * 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 @@ * 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)); } } Index: contrib/dev/acpica/nsalloc.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsalloc.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 nsalloc.c --- contrib/dev/acpica/nsalloc.c 9 Jul 2002 17:51:29 -0000 1.1.1.15 +++ contrib/dev/acpica/nsalloc.c 21 Nov 2002 03:00:24 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsalloc - Namespace allocation and deletion utilities - * $Revision: 74 $ + * $Revision: 77 $ * ******************************************************************************/ @@ -223,6 +223,60 @@ } +#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 @@ * 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 @@ { 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 @@ 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 @@ /* Clear end-of-list flag */ ChildNode->Flags &= ~ANOBJ_END_OF_PEER_LIST; + Node->Flags |= ANOBJ_END_OF_PEER_LIST; + Node->Peer = ParentNode; +#endif } /* Init the new entry */ - Node->OwnerId = OwnerId; - Node->Flags |= ANOBJ_END_OF_PEER_LIST; - Node->Peer = ParentNode; - - - /* - * If adding a name with unknown type, or having to - * add the region in order to define fields in it, we - * have a forward reference. - */ - if ((ACPI_TYPE_ANY == Type) || - (INTERNAL_TYPE_FIELD_DEFN == Type) || - (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) - { - /* - * We don't want to abort here, however! - * We will fill in the actual type when the - * real definition is found later. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] is a forward reference\n", - Node->Name.Ascii)); - } - - /* - * The DefFieldDefn and BankFieldDefn cases are actually - * looking up the Region in which the field will be defined - */ - if ((INTERNAL_TYPE_FIELD_DEFN == Type) || - (INTERNAL_TYPE_BANK_FIELD_DEFN == Type)) - { - Type = ACPI_TYPE_REGION; - } - - /* - * Scope, DefAny, and IndexFieldDefn are bogus "types" which do - * not actually have anything to do with the type of the name - * being looked up. Save any other value of Type as the type of - * the entry. - */ - if ((Type != INTERNAL_TYPE_SCOPE) && - (Type != INTERNAL_TYPE_DEF_ANY) && - (Type != INTERNAL_TYPE_INDEX_FIELD_DEFN)) - { - Node->Type = (UINT8) Type; - } + Node->OwnerId = OwnerId; + Node->Type = (UINT8) Type; - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s added to %p at %p\n", - Node->Name.Ascii, ParentNode, Node)); + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s (%s) added to %4.4s (%s) %p at %p\n", + Node->Name.Ascii, AcpiUtGetTypeName (Node->Type), + ParentNode->Name.Ascii, AcpiUtGetTypeName (ParentNode->Type), ParentNode, Node)); /* * Increment the reference count(s) of all parents up to Index: contrib/dev/acpica/nsdump.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsdump.c,v retrieving revision 1.1.1.18 diff -u -r1.1.1.18 nsdump.c --- contrib/dev/acpica/nsdump.c 4 Oct 2002 20:07:56 -0000 1.1.1.18 +++ contrib/dev/acpica/nsdump.c 21 Nov 2002 03:00:24 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsdump - table dumping routines for debug - * $Revision: 141 $ + * $Revision: 146 $ * *****************************************************************************/ @@ -248,22 +248,14 @@ 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 @@ return (AE_OK); } + ThisNode = AcpiNsMapHandleToNode (ObjHandle); + Type = ThisNode->Type; + /* Check if the owner matches */ if ((Info->OwnerId != ACPI_UINT32_MAX) && @@ -286,56 +281,13 @@ /* Indent the object according to the level */ - while (LevelTmp--) - { - /* Print appropriate characters to form tree structure */ - - if (LevelTmp) - { - if (DownstreamSiblingMask & WhichBit) - { - AcpiOsPrintf ("|"); - } - else - { - AcpiOsPrintf (" "); - } - - WhichBit <<= 1; - } - else - { - if (AcpiNsExistDownstreamSibling (ThisNode + 1)) - { - DownstreamSiblingMask |= ((UINT32) 1 << (Level - 1)); - AcpiOsPrintf ("+"); - } - else - { - DownstreamSiblingMask &= ACPI_UINT32_MAX ^ ((UINT32) 1 << (Level - 1)); - AcpiOsPrintf ("+"); - } - - if (ThisNode->Child == NULL) - { - AcpiOsPrintf ("-"); - } - else if (AcpiNsExistDownstreamSibling (ThisNode->Child)) - { - AcpiOsPrintf ("+"); - } - else - { - AcpiOsPrintf ("-"); - } - } - } + AcpiOsPrintf ("%2d%*s", (UINT32) Level - 1, (int) Level * 2, " "); - /* Check the integrity of our data */ + /* Check the node type and name */ - if (Type > INTERNAL_TYPE_MAX) + if (Type > ACPI_TYPE_LOCAL_MAX) { - Type = INTERNAL_TYPE_DEF_ANY; /* prints as *ERROR* */ + ACPI_REPORT_WARNING (("Invalid ACPI Type %08X\n", Type)); } if (!AcpiUtValidAcpiName (ThisNode->Name.Integer)) @@ -346,7 +298,7 @@ /* * 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 @@ { 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ } 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ goto Cleanup; } - ObjType = INTERNAL_TYPE_INVALID; /* Terminate loop after next pass */ + ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */ } Cleanup: Index: contrib/dev/acpica/nseval.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nseval.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 nseval.c --- contrib/dev/acpica/nseval.c 29 Aug 2002 01:51:21 -0000 1.1.1.16 +++ contrib/dev/acpica/nseval.c 21 Nov 2002 03:00:24 -0000 @@ -2,7 +2,7 @@ * * Module Name: nseval - Object evaluation interfaces -- includes control * method lookup and execution. - * $Revision: 118 $ + * $Revision: 119 $ * ******************************************************************************/ @@ -495,7 +495,7 @@ 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", Index: contrib/dev/acpica/nsinit.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsinit.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 nsinit.c --- contrib/dev/acpica/nsinit.c 29 Aug 2002 01:51:21 -0000 1.1.1.16 +++ contrib/dev/acpica/nsinit.c 21 Nov 2002 03:00:24 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsinit - namespace initialization - * $Revision: 49 $ + * $Revision: 50 $ * *****************************************************************************/ @@ -419,7 +419,7 @@ 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, ".")); } Index: contrib/dev/acpica/nsobject.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsobject.c,v retrieving revision 1.1.1.14 diff -u -r1.1.1.14 nsobject.c --- contrib/dev/acpica/nsobject.c 9 Jul 2002 17:51:29 -0000 1.1.1.14 +++ contrib/dev/acpica/nsobject.c 21 Nov 2002 03:00:24 -0000 @@ -2,7 +2,7 @@ * * Module Name: nsobject - Utilities for objects attached to namespace * table entries - * $Revision: 83 $ + * $Revision: 85 $ * ******************************************************************************/ @@ -227,16 +227,9 @@ { 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 @@ * * 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 @@ 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 @@ { 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 @@ * 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 @@ 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 @@ * 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 @@ 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 @@ * * 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 @@ 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 @@ 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 @@ DataDesc->Data.Handler = Handler; DataDesc->Data.Pointer = Data; - /* Install the data object */ if (PrevObjDesc) @@ -474,11 +472,13 @@ * * 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 @@ 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 @@ * * 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 @@ 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; Index: contrib/dev/acpica/nssearch.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nssearch.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 nssearch.c --- contrib/dev/acpica/nssearch.c 29 Aug 2002 01:51:22 -0000 1.1.1.16 +++ contrib/dev/acpica/nssearch.c 21 Nov 2002 03:00:24 -0000 @@ -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 @@ 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 @@ #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 @@ 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 @@ 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 @@ * 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 @@ 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 @@ * * 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 @@ * * 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 @@ 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 @@ (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, Index: contrib/dev/acpica/nsutils.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsutils.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 nsutils.c --- contrib/dev/acpica/nsutils.c 4 Oct 2002 20:07:56 -0000 1.1.1.16 +++ contrib/dev/acpica/nsutils.c 21 Nov 2002 03:00:24 -0000 @@ -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 @@ 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 @@ AcpiNsOpensScope ( ACPI_OBJECT_TYPE Type) { - ACPI_FUNCTION_TRACE_U32 ("NsOpensScope", Type); + ACPI_FUNCTION_TRACE_STR ("NsOpensScope", AcpiUtGetTypeName (Type)); if (!AcpiUtValidObjectType (Type)) @@ -1033,45 +1037,6 @@ return_VALUE (ACPI_UNKNOWN_NAME); } - - -#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 */ /******************************************************************************* Index: contrib/dev/acpica/nsxfeval.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsxfeval.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 nsxfeval.c --- contrib/dev/acpica/nsxfeval.c 29 Aug 2002 01:51:22 -0000 1.1.1.2 +++ contrib/dev/acpica/nsxfeval.c 21 Nov 2002 03:00:24 -0000 @@ -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 @@ /* 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 @@ * * 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 @@ * * 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 @@ * * 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. * ******************************************************************************/ Index: contrib/dev/acpica/nsxfobj.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/nsxfobj.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 nsxfobj.c --- contrib/dev/acpica/nsxfobj.c 30 Jul 2002 19:33:38 -0000 1.1.1.16 +++ contrib/dev/acpica/nsxfobj.c 21 Nov 2002 03:00:24 -0000 @@ -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 @@ /* Parameter validation */ - if (Type > ACPI_TYPE_MAX) + if (Type > ACPI_TYPE_EXTERNAL_MAX) { return (AE_BAD_PARAMETER); } Index: contrib/dev/acpica/psargs.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/psargs.c,v retrieving revision 1.1.1.13 diff -u -r1.1.1.13 psargs.c --- contrib/dev/acpica/psargs.c 29 Aug 2002 01:51:21 -0000 1.1.1.13 +++ contrib/dev/acpica/psargs.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psargs - Parse AML opcode arguments - * $Revision: 64 $ + * $Revision: 65 $ * *****************************************************************************/ @@ -188,6 +188,7 @@ break; default: + /* Can't get here, only 2 bits / 4 cases */ break; } @@ -220,6 +221,8 @@ 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 @@ /* 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 @@ * 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 @@ 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 @@ * 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 @@ /* 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 @@ 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 @@ * (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 @@ default: + ACPI_REPORT_ERROR (("Invalid ArgType %X\n", ArgType)); break; } @@ -539,7 +575,7 @@ 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 @@ 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 @@ break; default: + /* Opcode was set in previous switch */ break; } @@ -646,9 +683,9 @@ 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 @@ /* 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 @@ 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 @@ /* single complex argument, nothing returned */ - *ArgCount = 1; + WalkState->ArgCount = 1; break; @@ -791,7 +829,7 @@ { /* non-empty list of variable arguments, nothing returned */ - *ArgCount = ACPI_VAR_ARGS; + WalkState->ArgCount = ACPI_VAR_ARGS; } break; Index: contrib/dev/acpica/psopcode.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/psopcode.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 psopcode.c --- contrib/dev/acpica/psopcode.c 29 Aug 2002 01:51:21 -0000 1.1.1.16 +++ contrib/dev/acpica/psopcode.c 21 Nov 2002 03:00:23 -0000 @@ -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 !*/ }; Index: contrib/dev/acpica/psparse.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/psparse.c,v retrieving revision 1.18 diff -u -r1.18 psparse.c --- contrib/dev/acpica/psparse.c 29 Aug 2002 01:52:26 -0000 1.18 +++ contrib/dev/acpica/psparse.c 21 Nov 2002 03:00:23 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psparse - Parser top level AML parse routines - * $Revision: 133 $ + * $Revision: 135 $ * *****************************************************************************/ @@ -580,7 +580,8 @@ Status = AcpiPsNextParseState (WalkState, Op, Status); } - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op)); } else if (WalkState->PrevOp) @@ -603,7 +604,8 @@ { /* Get the next opcode from the AML stream */ - WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, ParserState->AmlStart); + WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, + ParserState->AmlStart); WalkState->Opcode = AcpiPsPeekOpcode (ParserState); /* @@ -663,9 +665,8 @@ while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) { - Status = AcpiPsGetNextArg (ParserState, - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), - &WalkState->ArgCount, &Arg); + Status = AcpiPsGetNextArg (WalkState, ParserState, + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { goto CloseThisOp; @@ -726,7 +727,7 @@ * Defer final parsing of an OperationRegion body, * because we don't have enough info in the first pass * to parse it correctly (i.e., there may be method - * calls within the TermArg elements of the body. + * calls within the TermArg elements of the body.) * * However, we must continue parsing because * the opregion is not a standalone package -- @@ -815,22 +816,15 @@ /* Fill in constant or string argument directly */ AcpiPsGetNextSimpleArg (ParserState, - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), Op); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), Op); break; case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - Status = AcpiPsGetNextNamepath (ParserState, Op, &WalkState->ArgCount, 1); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, Op, 1); if (ACPI_FAILURE (Status)) { - /* NOT_FOUND is an error only if we are actually executing a method */ - - if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) && - (Status == AE_NOT_FOUND)) || - (Status != AE_NOT_FOUND)) - { - goto CloseThisOp; - } + goto CloseThisOp; } WalkState->ArgTypes = 0; @@ -841,24 +835,16 @@ /* Op is not a constant or string, append each argument */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) + while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && + !WalkState->ArgCount) { WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, ParserState->AmlStart); - Status = AcpiPsGetNextArg (ParserState, - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), - &WalkState->ArgCount, &Arg); + Status = AcpiPsGetNextArg (WalkState, ParserState, + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { - /* NOT_FOUND is an error only if we are actually executing a method */ - - if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) && - (Status == AE_NOT_FOUND) && - (Op->Common.AmlOpcode != AML_COND_REF_OF_OP)) || - (Status != AE_NOT_FOUND)) - { - goto CloseThisOp; - } + goto CloseThisOp; } if (Arg) @@ -936,7 +922,8 @@ { /* There are arguments (complex ones), push Op and prepare for argument */ - Status = AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount); + Status = AcpiPsPushScope (ParserState, Op, + WalkState->ArgTypes, WalkState->ArgCount); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -1026,7 +1013,8 @@ case AE_CTRL_END: - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); if (Op) { @@ -1051,7 +1039,8 @@ while (!Op || (Op->Common.AmlOpcode != AML_WHILE_OP)) { - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); } /* Close this iteration of the While loop */ @@ -1081,7 +1070,8 @@ { AcpiPsCompleteThisOp (WalkState, Op); } - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); } while (Op); @@ -1096,7 +1086,8 @@ { AcpiPsCompleteThisOp (WalkState, Op); } - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); } while (Op); @@ -1107,7 +1098,8 @@ #if 0 if (Op == NULL) { - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); } #endif WalkState->PrevOp = Op; @@ -1119,7 +1111,8 @@ if (AcpiPsHasCompletedScope (ParserState)) { - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op)); } else @@ -1167,7 +1160,8 @@ AcpiPsCompleteThisOp (WalkState, Op); } - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, + &WalkState->ArgTypes, &WalkState->ArgCount); } while (Op); @@ -1184,7 +1178,8 @@ AcpiPsCompleteThisOp (WalkState, Op); } - AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); + AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, + &WalkState->ArgCount); } while (Op); @@ -1264,7 +1259,8 @@ } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Completed one call to walk loop, State=%p\n", WalkState)); + "Completed one call to walk loop, %s State=%p\n", + AcpiFormatException (Status), WalkState)); if (Status == AE_CTRL_TRANSFER) { @@ -1281,11 +1277,17 @@ WalkState = AcpiDsGetCurrentWalkState (Thread); continue; } - else if (Status == AE_CTRL_TERMINATE) { Status = AE_OK; } + else if (Status != AE_OK) + { + ACPI_REPORT_ERROR (("Method execution failed, %s\n", + AcpiFormatException (Status))); + ACPI_DUMP_PATHNAME (WalkState->MethodNode, "Method pathname: ", + ACPI_LV_ERROR, _COMPONENT); + } /* We are done with this walk, move on to the parent if any */ @@ -1312,7 +1314,8 @@ TerminateStatus = AcpiDsTerminateControlMethod (WalkState); if (ACPI_FAILURE (TerminateStatus)) { - ACPI_REPORT_ERROR (("Could not terminate control method properly\n")); + ACPI_REPORT_ERROR (( + "Could not terminate control method properly\n")); /* Ignore error and continue */ } @@ -1339,7 +1342,8 @@ * If the method return value is not used by the parent, * The object is deleted */ - Status = AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc); + Status = AcpiDsRestartControlMethod (WalkState, + PreviousWalkState->ReturnDesc); if (ACPI_SUCCESS (Status)) { WalkState->WalkType |= ACPI_WALK_METHOD_RESTART; @@ -1350,10 +1354,6 @@ /* On error, delete any return object */ AcpiUtRemoveReference (PreviousWalkState->ReturnDesc); - - ACPI_REPORT_ERROR (("Method execution failed, %s\n", AcpiFormatException (Status))); - ACPI_DUMP_PATHNAME (WalkState->MethodNode, "Method pathname: ", - ACPI_LV_ERROR, _COMPONENT); } } @@ -1376,7 +1376,6 @@ *(PreviousWalkState->CallerReturnDesc) = PreviousWalkState->ReturnDesc; /* NULL if no return value */ } - else if (PreviousWalkState->ReturnDesc) { /* Caller doesn't want it, must delete it */ Index: contrib/dev/acpica/rscalc.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/rscalc.c,v retrieving revision 1.1.1.11 diff -u -r1.1.1.11 rscalc.c --- contrib/dev/acpica/rscalc.c 9 Jul 2002 17:51:30 -0000 1.1.1.11 +++ contrib/dev/acpica/rscalc.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rscalc - Calculate stream and list lengths - * $Revision: 43 $ + * $Revision: 44 $ * ******************************************************************************/ @@ -891,7 +891,7 @@ 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; Index: contrib/dev/acpica/rscreate.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/rscreate.c,v retrieving revision 1.6 diff -u -r1.6 rscreate.c --- contrib/dev/acpica/rscreate.c 29 Aug 2002 01:52:26 -0000 1.6 +++ contrib/dev/acpica/rscreate.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rscreate - Create resource lists/tables - * $Revision: 58 $ + * $Revision: 61 $ * ******************************************************************************/ @@ -159,7 +159,8 @@ ACPI_FUNCTION_TRACE ("RsCreateResourceList"); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamBuffer = %p\n", ByteStreamBuffer)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamBuffer = %p\n", + ByteStreamBuffer)); /* * Params already validated, so we don't re-validate here @@ -231,13 +232,13 @@ ACPI_BUFFER *OutputBuffer) { UINT8 *Buffer; - ACPI_OPERAND_OBJECT **TopObjectList = NULL; - ACPI_OPERAND_OBJECT **SubObjectList = NULL; - ACPI_OPERAND_OBJECT *PackageElement = NULL; + ACPI_OPERAND_OBJECT **TopObjectList; + ACPI_OPERAND_OBJECT **SubObjectList; + ACPI_OPERAND_OBJECT *ObjDesc; ACPI_SIZE BufferSizeNeeded = 0; - UINT32 NumberOfElements = 0; - UINT32 Index = 0; - ACPI_PCI_ROUTING_TABLE *UserPrt = NULL; + UINT32 NumberOfElements; + UINT32 Index; + ACPI_PCI_ROUTING_TABLE *UserPrt; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_BUFFER PathBuffer; @@ -258,7 +259,8 @@ return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", (UINT32) BufferSizeNeeded)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", + (UINT32) BufferSizeNeeded)); /* Validate/Allocate/Clear caller buffer */ @@ -269,7 +271,8 @@ } /* - * Loop through the ACPI_INTERNAL_OBJECTS - Each object should contain an + * Loop through the ACPI_INTERNAL_OBJECTS - Each object + * should be a package that in turn contains an * ACPI_INTEGER Address, a UINT8 Pin, a Name and a UINT8 SourceIndex. */ TopObjectList = PackageObject->Package.Elements; @@ -293,87 +296,106 @@ * The minus four is to subtract the size of the UINT8 Source[4] member * because it is added below. */ - UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) -4); + UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); /* - * Dereference the sub-package + * Each element of the top-level package must also be a package */ - PackageElement = *TopObjectList; + if (ACPI_GET_OBJECT_TYPE (*TopObjectList) != ACPI_TYPE_PACKAGE) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X]) Need sub-package, found %s\n", + Index, AcpiUtGetObjectTypeName (*TopObjectList))); + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + } + + /* Each sub-package must be of length 4 */ + + if ((*TopObjectList)->Package.Count != 4) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X]) Need package of length 4, found length %d\n", + Index, (*TopObjectList)->Package.Count)); + return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT); + } /* + * Dereference the sub-package. * The SubObjectList will now point to an array of the four IRQ - * elements: Address, Pin, Source and SourceIndex + * elements: [Address, Pin, Source, SourceIndex] */ - SubObjectList = PackageElement->Package.Elements; + SubObjectList = (*TopObjectList)->Package.Elements; /* - * 1) First subobject: Dereference the Address + * 1) First subobject: Dereference the PRT.Address */ - if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER) + ObjDesc = SubObjectList[0]; + if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) { - UserPrt->Address = (*SubObjectList)->Integer.Value; + UserPrt->Address = ObjDesc->Integer.Value; } else { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", - AcpiUtGetObjectTypeName (*SubObjectList))); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X].Address) Need Integer, found %s\n", + Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } /* - * 2) Second subobject: Dereference the Pin + * 2) Second subobject: Dereference the PRT.Pin */ - SubObjectList++; - - if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER) + ObjDesc = SubObjectList[1]; + if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) { - UserPrt->Pin = (UINT32) (*SubObjectList)->Integer.Value; + UserPrt->Pin = (UINT32) ObjDesc->Integer.Value; } else { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", - AcpiUtGetObjectTypeName (*SubObjectList))); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X].Pin) Need Integer, found %s\n", + Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } /* - * 3) Third subobject: Dereference the Source Name + * 3) Third subobject: Dereference the PRT.SourceName */ - SubObjectList++; - - switch (ACPI_GET_OBJECT_TYPE (*SubObjectList)) + ObjDesc = SubObjectList[2]; + switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: - if ((*SubObjectList)->Reference.Opcode != AML_INT_NAMEPATH_OP) + if (ObjDesc->Reference.Opcode != AML_INT_NAMEPATH_OP) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need name, found reference op %X\n", - (*SubObjectList)->Reference.Opcode)); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X].Source) Need name, found reference op %X\n", + Index, ObjDesc->Reference.Opcode)); return_ACPI_STATUS (AE_BAD_DATA); } - Node = (*SubObjectList)->Reference.Node; + Node = ObjDesc->Reference.Node; /* Use *remaining* length of the buffer as max for pathname */ PathBuffer.Length = OutputBuffer->Length - - (UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer); + (UINT32) ((UINT8 *) UserPrt->Source - + (UINT8 *) OutputBuffer->Pointer); PathBuffer.Pointer = UserPrt->Source; Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer); - UserPrt->Length += ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */ + UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */ break; case ACPI_TYPE_STRING: - ACPI_STRCPY (UserPrt->Source, - (*SubObjectList)->String.Pointer); + ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer); /* Add to the Length field the length of the string */ - UserPrt->Length += (*SubObjectList)->String.Length; + UserPrt->Length += ObjDesc->String.Length; break; @@ -390,8 +412,9 @@ default: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", - AcpiUtGetObjectTypeName (*SubObjectList))); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X].Source) Need Ref/String/Integer, found %s\n", + Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -400,22 +423,22 @@ UserPrt->Length = ACPI_ROUND_UP_TO_64BITS (UserPrt->Length); /* - * 4) Fourth subobject: Dereference the Source Index + * 4) Fourth subobject: Dereference the PRT.SourceIndex */ - SubObjectList++; - - if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER) + ObjDesc = SubObjectList[3]; + if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) { - UserPrt->SourceIndex = (UINT32) (*SubObjectList)->Integer.Value; + UserPrt->SourceIndex = (UINT32) ObjDesc->Integer.Value; } else { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n", - AcpiUtGetObjectTypeName (*SubObjectList))); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + "(PRT[%X].SourceIndex) Need Integer, found %s\n", + Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } - /* Point to the next ACPI_OPERAND_OBJECT */ + /* Point to the next ACPI_OPERAND_OBJECT in the top level package */ TopObjectList++; } @@ -456,7 +479,8 @@ ACPI_FUNCTION_TRACE ("RsCreateByteStream"); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n", LinkedListBuffer)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n", + LinkedListBuffer)); /* * Params already validated, so we don't re-validate here Index: contrib/dev/acpica/tbconvrt.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbconvrt.c,v retrieving revision 1.1.1.14 diff -u -r1.1.1.14 tbconvrt.c --- contrib/dev/acpica/tbconvrt.c 29 Aug 2002 01:51:22 -0000 1.1.1.14 +++ contrib/dev/acpica/tbconvrt.c 21 Nov 2002 03:00:27 -0000 @@ -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 @@ * * 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 @@ /* 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 @@ * * 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 @@ /* 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); Index: contrib/dev/acpica/tbget.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbget.c,v retrieving revision 1.9 diff -u -r1.9 tbget.c --- contrib/dev/acpica/tbget.c 4 Oct 2002 20:09:19 -0000 1.9 +++ contrib/dev/acpica/tbget.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbget - ACPI Table get* routines - * $Revision: 80 $ + * $Revision: 81 $ * *****************************************************************************/ @@ -492,7 +492,6 @@ TableInfo->Pointer = FullTable; TableInfo->Length = (ACPI_SIZE) Header->Length; TableInfo->Allocation = Allocation; - TableInfo->BasePointer = FullTable; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Found table [%4.4s] at %8.8X%8.8X, mapped/copied to %p\n", Index: contrib/dev/acpica/tbgetall.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbgetall.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 tbgetall.c --- contrib/dev/acpica/tbgetall.c 29 Aug 2002 01:51:23 -0000 1.1.1.2 +++ contrib/dev/acpica/tbgetall.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbgetall - Get all required ACPI tables - * $Revision: 2 $ + * $Revision: 3 $ * *****************************************************************************/ @@ -319,7 +319,14 @@ * 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 */ Index: contrib/dev/acpica/tbinstal.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbinstal.c,v retrieving revision 1.1.1.17 diff -u -r1.1.1.17 tbinstal.c --- contrib/dev/acpica/tbinstal.c 29 Aug 2002 01:51:23 -0000 1.1.1.17 +++ contrib/dev/acpica/tbinstal.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbinstal - ACPI table installation and removal - * $Revision: 63 $ + * $Revision: 64 $ * *****************************************************************************/ @@ -394,7 +394,6 @@ 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 @@ 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: Index: contrib/dev/acpica/tbrsdt.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbrsdt.c,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 tbrsdt.c --- contrib/dev/acpica/tbrsdt.c 29 Aug 2002 01:51:23 -0000 1.1.1.2 +++ contrib/dev/acpica/tbrsdt.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbrsdt - ACPI RSDT table utilities - * $Revision: 3 $ + * $Revision: 4 $ * *****************************************************************************/ @@ -206,7 +206,6 @@ 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 */ Index: contrib/dev/acpica/tbutils.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbutils.c,v retrieving revision 1.1.1.16 diff -u -r1.1.1.16 tbutils.c --- contrib/dev/acpica/tbutils.c 29 Aug 2002 01:51:23 -0000 1.1.1.16 +++ contrib/dev/acpica/tbutils.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbutils - Table manipulation utilities - * $Revision: 56 $ + * $Revision: 57 $ * *****************************************************************************/ @@ -274,8 +274,8 @@ 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; } Index: contrib/dev/acpica/tbxfroot.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/tbxfroot.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 tbxfroot.c --- contrib/dev/acpica/tbxfroot.c 30 Jul 2002 19:33:39 -0000 1.1.1.15 +++ contrib/dev/acpica/tbxfroot.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbxfroot - Find the root ACPI table (RSDT) - * $Revision: 64 $ + * $Revision: 65 $ * *****************************************************************************/ @@ -415,7 +415,8 @@ 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 @@ (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 @@ (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); } Index: contrib/dev/acpica/utcopy.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/utcopy.c,v retrieving revision 1.1.1.18 diff -u -r1.1.1.18 utcopy.c --- contrib/dev/acpica/utcopy.c 4 Oct 2002 20:07:57 -0000 1.1.1.18 +++ contrib/dev/acpica/utcopy.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utcopy - Internal to external object translation utilities - * $Revision: 104 $ + * $Revision: 105 $ * *****************************************************************************/ @@ -207,7 +207,7 @@ break; - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: /* * This is an object reference. Attempt to dereference it. Index: contrib/dev/acpica/utdelete.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/utdelete.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 utdelete.c --- contrib/dev/acpica/utdelete.c 9 Jul 2002 17:51:31 -0000 1.1.1.15 +++ contrib/dev/acpica/utdelete.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utdelete - object deletion and reference count utilities - * $Revision: 91 $ + * $Revision: 92 $ * ******************************************************************************/ @@ -530,7 +530,7 @@ break; - case INTERNAL_TYPE_ADDRESS_HANDLER: + case ACPI_TYPE_LOCAL_ADDRESS_HANDLER: /* Must walk list of address handlers */ @@ -579,7 +579,7 @@ break; - case INTERNAL_TYPE_REGION_FIELD: + case ACPI_TYPE_LOCAL_REGION_FIELD: Status = AcpiUtCreateUpdateStateAndPush ( Object->Field.RegionObj, Action, &StateList); @@ -590,7 +590,7 @@ break; - case INTERNAL_TYPE_BANK_FIELD: + case ACPI_TYPE_LOCAL_BANK_FIELD: Status = AcpiUtCreateUpdateStateAndPush ( Object->BankField.BankObj, Action, &StateList); @@ -608,7 +608,7 @@ break; - case INTERNAL_TYPE_INDEX_FIELD: + case ACPI_TYPE_LOCAL_INDEX_FIELD: Status = AcpiUtCreateUpdateStateAndPush ( Object->IndexField.IndexObj, Action, &StateList); @@ -627,7 +627,7 @@ case ACPI_TYPE_REGION: - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: default: /* No subobjects */ Index: contrib/dev/acpica/utglobal.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/utglobal.c,v retrieving revision 1.7 diff -u -r1.7 utglobal.c --- contrib/dev/acpica/utglobal.c 4 Oct 2002 20:09:19 -0000 1.7 +++ contrib/dev/acpica/utglobal.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utglobal - Global variables for the ACPI subsystem - * $Revision: 171 $ + * $Revision: 172 $ * *****************************************************************************/ @@ -275,11 +275,11 @@ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = { - {"_GPE", INTERNAL_TYPE_SCOPE, NULL}, - {"_PR_", INTERNAL_TYPE_SCOPE, NULL}, + {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, + {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL}, - {"_SI_", INTERNAL_TYPE_SCOPE, NULL}, - {"_TZ_", INTERNAL_TYPE_SCOPE, NULL}, + {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, + {"_TZ_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_REV", ACPI_TYPE_INTEGER, "2"}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, "0"}, @@ -324,17 +324,10 @@ ACPI_NS_NORMAL, /* 23 Address Handler */ ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 24 Resource Desc */ ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Field */ - ACPI_NS_NORMAL, /* 26 DefFieldDefn */ - ACPI_NS_NORMAL, /* 27 BankFieldDefn */ - ACPI_NS_NORMAL, /* 28 IndexFieldDefn */ - ACPI_NS_NORMAL, /* 29 If */ - ACPI_NS_NORMAL, /* 30 Else */ - ACPI_NS_NORMAL, /* 31 While */ - ACPI_NS_NEWSCOPE, /* 32 Scope */ - ACPI_NS_LOCAL, /* 33 DefAny */ - ACPI_NS_NORMAL, /* 34 Extra */ - ACPI_NS_NORMAL, /* 35 Data */ - ACPI_NS_NORMAL /* 36 Invalid */ + ACPI_NS_NEWSCOPE, /* 26 Scope */ + ACPI_NS_NORMAL, /* 27 Extra */ + ACPI_NS_NORMAL, /* 28 Data */ + ACPI_NS_NORMAL /* 29 Invalid */ }; @@ -580,17 +573,10 @@ /* 23 */ "AddrHandler", /* 24 */ "ResourceDesc", /* 25 */ "ResourceFld", - /* 26 */ "RegionFldDfn", - /* 27 */ "BankFldDfn", - /* 28 */ "IndexFldDfn", - /* 29 */ "If", - /* 30 */ "Else", - /* 31 */ "While", - /* 32 */ "Scope", - /* 33 */ "DefAny", - /* 34 */ "Extra", - /* 35 */ "Data", - /* 36 */ "Invalid" + /* 26 */ "Scope", + /* 27 */ "Extra", + /* 28 */ "Data", + /* 39 */ "Invalid" }; @@ -599,7 +585,7 @@ ACPI_OBJECT_TYPE Type) { - if (Type > INTERNAL_TYPE_INVALID) + if (Type > ACPI_TYPE_INVALID) { return ((NATIVE_CHAR *) AcpiGbl_BadType); } @@ -662,7 +648,7 @@ * * FUNCTION: AcpiUtValidObjectType * - * PARAMETERS: None. + * PARAMETERS: Type - Object type to be validated * * RETURN: TRUE if valid object type * @@ -675,13 +661,11 @@ ACPI_OBJECT_TYPE Type) { - if (Type > ACPI_TYPE_MAX) + if (Type > ACPI_TYPE_LOCAL_MAX) { - if ((Type < INTERNAL_TYPE_BEGIN) || - (Type > INTERNAL_TYPE_MAX)) - { - return (FALSE); - } + /* Note: Assumes all TYPEs are contiguous (external/local) */ + + return (FALSE); } return (TRUE); @@ -866,7 +850,7 @@ AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; AcpiGbl_RootNodeStruct.Descriptor = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_ANY; + AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; AcpiGbl_RootNodeStruct.Child = NULL; AcpiGbl_RootNodeStruct.Peer = NULL; AcpiGbl_RootNodeStruct.Object = NULL; Index: contrib/dev/acpica/utmisc.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/utmisc.c,v retrieving revision 1.1.1.14 diff -u -r1.1.1.14 utmisc.c --- contrib/dev/acpica/utmisc.c 4 Oct 2002 20:07:57 -0000 1.1.1.14 +++ contrib/dev/acpica/utmisc.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utmisc - common utility procedures - * $Revision: 84 $ + * $Revision: 86 $ * ******************************************************************************/ @@ -127,6 +127,102 @@ /******************************************************************************* * + * FUNCTION: AcpiUtPrintString + * + * PARAMETERS: String - Null terminated ASCII string + * + * RETURN: None + * + * DESCRIPTION: Dump an ASCII string with support for ACPI-defined escape + * sequences. + * + ******************************************************************************/ + +void +AcpiUtPrintString ( + char *String, + UINT8 MaxLength) +{ + UINT32 i; + + + if (!String) + { + AcpiOsPrintf ("<\"NULL STRING PTR\">"); + return; + } + + AcpiOsPrintf ("\""); + for (i = 0; String[i] && (i < MaxLength); i++) + { + /* Escape sequences */ + + switch (String[i]) + { + case 0x07: + AcpiOsPrintf ("\\a"); /* BELL */ + break; + + case 0x08: + AcpiOsPrintf ("\\b"); /* BACKSPACE */ + break; + + case 0x0C: + AcpiOsPrintf ("\\f"); /* FORMFEED */ + break; + + case 0x0A: + AcpiOsPrintf ("\\n"); /* LINEFEED */ + break; + + case 0x0D: + AcpiOsPrintf ("\\r"); /* CARRIAGE RETURN*/ + break; + + case 0x09: + AcpiOsPrintf ("\\t"); /* HORIZONTAL TAB */ + break; + + case 0x0B: + AcpiOsPrintf ("\\v"); /* VERTICAL TAB */ + break; + + case '\'': /* Single Quote */ + case '\"': /* Double Quote */ + case '\\': /* Backslash */ + AcpiOsPrintf ("\\%c", (int) String[i]); + break; + + default: + + /* Check for printable character or hex escape */ + + if (ACPI_IS_PRINT (String[i])) + { + /* This is a normal character */ + + AcpiOsPrintf ("%c", (int) String[i]); + } + else + { + /* All others will be Hex escapes */ + + AcpiOsPrintf ("\\x%2.2X", (INT32) String[i]); + } + break; + } + } + AcpiOsPrintf ("\""); + + if (i == MaxLength && String[i]) + { + AcpiOsPrintf ("..."); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiUtDwordByteSwap * * PARAMETERS: Value - Value to be converted @@ -723,7 +819,7 @@ 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", Index: contrib/dev/acpica/utobject.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/utobject.c,v retrieving revision 1.1.1.15 diff -u -r1.1.1.15 utobject.c --- contrib/dev/acpica/utobject.c 9 Jul 2002 17:51:31 -0000 1.1.1.15 +++ contrib/dev/acpica/utobject.c 21 Nov 2002 03:00:27 -0000 @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utobject - ACPI object create/delete/size/cache routines - * $Revision: 76 $ + * $Revision: 79 $ * *****************************************************************************/ @@ -182,7 +182,7 @@ return_PTR (NULL); } - SecondObject->Common.Type = INTERNAL_TYPE_EXTRA; + SecondObject->Common.Type = ACPI_TYPE_LOCAL_EXTRA; SecondObject->Common.ReferenceCount = 1; /* Link the second object to the first */ @@ -211,6 +211,61 @@ /******************************************************************************* * + * FUNCTION: AcpiUtCreateBufferObject + * + * PARAMETERS: BufferSize - Size of buffer to be created + * + * RETURN: Pointer to a new Buffer object + * + * DESCRIPTION: Create a fully initialized buffer object + * + ******************************************************************************/ + +ACPI_OPERAND_OBJECT * +AcpiUtCreateBufferObject ( + ACPI_SIZE BufferSize) +{ + ACPI_OPERAND_OBJECT *BufferDesc; + UINT8 *Buffer; + + + ACPI_FUNCTION_TRACE_U32 ("UtCreateBufferObject", BufferSize); + + + /* + * Create a new Buffer object + */ + BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); + if (!BufferDesc) + { + return_PTR (NULL); + } + + /* Allocate the actual buffer */ + + Buffer = ACPI_MEM_CALLOCATE (BufferSize); + if (!Buffer) + { + ACPI_REPORT_ERROR (("CreateBuffer: could not allocate size %X\n", + (UINT32) BufferSize)); + AcpiUtRemoveReference (BufferDesc); + return_PTR (NULL); + } + + /* Complete buffer object initialization */ + + BufferDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; + BufferDesc->Buffer.Pointer = Buffer; + BufferDesc->Buffer.Length = (UINT32) BufferSize; + + /* Return the new buffer descriptor */ + + return_PTR (BufferDesc); +} + + +/******************************************************************************* + * * FUNCTION: AcpiUtValidInternalObject * * PARAMETERS: Object - Object to be validated @@ -231,8 +286,7 @@ 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 @@ "**** 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 @@ break; - case INTERNAL_TYPE_REFERENCE: + case ACPI_TYPE_LOCAL_REFERENCE: switch (InternalObject->Reference.Opcode) { Index: dev/acpica/acpi_ec.c =================================================================== RCS file: /home/ncvs/src/sys/dev/acpica/acpi_ec.c,v retrieving revision 1.28 diff -u -r1.28 acpi_ec.c --- dev/acpica/acpi_ec.c 24 Oct 2002 10:56:33 -0000 1.28 +++ dev/acpica/acpi_ec.c 21 Nov 2002 03:16:16 -0000 @@ -254,8 +254,8 @@ { ACPI_STATUS status; - /* XXX WAIT_FOREVER is probably a bad idea, what is a better time? */ - if (ACPI_SUCCESS(status = AcpiAcquireGlobalLock(WAIT_FOREVER, &sc->ec_lockhandle))) + /* XXX ACPI_WAIT_FOREVER is probably a bad idea, what is a better time? */ + if (ACPI_SUCCESS(status = AcpiAcquireGlobalLock(ACPI_WAIT_FOREVER, &sc->ec_lockhandle))) (sc)->ec_locked = 1; return(status); Index: dev/acpica/Osd/OsdSynch.c =================================================================== RCS file: /home/ncvs/src/sys/dev/acpica/Osd/OsdSynch.c,v retrieving revision 1.15 diff -u -r1.15 OsdSynch.c --- dev/acpica/Osd/OsdSynch.c 16 Oct 2002 17:23:34 -0000 1.15 +++ dev/acpica/Osd/OsdSynch.c 21 Nov 2002 03:17:42 -0000 @@ -144,7 +144,7 @@ * use getmicrotime() to correctly adjust the timeout after being woken up. */ ACPI_STATUS -AcpiOsWaitSemaphore(ACPI_HANDLE Handle, UINT32 Units, UINT32 Timeout) +AcpiOsWaitSemaphore(ACPI_HANDLE Handle, UINT32 Units, UINT16 Timeout) { #ifndef ACPI_NO_SEMAPHORES struct acpi_semaphore *as = (struct acpi_semaphore *)Handle; @@ -179,8 +179,8 @@ } #endif - /* a timeout of WAIT_FOREVER means "forever" */ - if (Timeout == WAIT_FOREVER) { + /* a timeout of ACPI_WAIT_FOREVER means "forever" */ + if (Timeout == ACPI_WAIT_FOREVER) { tmo = 0; timeouttv.tv_sec = ((0xffff/1000) + 1); /* cf. ACPI spec */ timeouttv.tv_usec = 0;