Another pass through the source to prefix all local types with "ACPI_"

date	2001.04.26.21.03.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 19:36:14 +00:00
parent b9a244fb69
commit 42601b19d0
6 changed files with 942 additions and 830 deletions

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acglobal.h - Declarations for global variables
* $Revision: 1.100 $
* $Revision: 1.101 $
*
*****************************************************************************/
@ -293,7 +293,7 @@ ACPI_EXTERN ACPI_WALK_LIST *AcpiGbl_CurrentWalkList;
/*
* Table of Address Space handlers
*/
ACPI_EXTERN ACPI_ADDRESS_SPACE_INFO AcpiGbl_AddressSpaces[ACPI_NUM_ADDRESS_SPACES];
ACPI_EXTERN ACPI_ADR_SPACE_INFO AcpiGbl_AddressSpaces[ACPI_NUM_ADDRESS_SPACES];
/* Control method single step flag */
@ -325,7 +325,7 @@ extern UINT32 AcpiHwActiveCxState;
*
****************************************************************************/
ACPI_EXTERN ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventHandlers[NUM_FIXED_EVENTS];
ACPI_EXTERN ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS];
ACPI_EXTERN ACPI_HANDLE AcpiGbl_GpeObjHandle;
ACPI_EXTERN UINT32 AcpiGbl_GpeRegisterCount;
@ -340,12 +340,12 @@ ACPI_EXTERN ACPI_GPE_LEVEL_INFO *AcpiGbl_GpeInfo;
* This table is needed because the GPE numbers supported by block 1 do not
* have to be contiguous with the GPE numbers supported by block 0.
*/
ACPI_EXTERN UINT8 AcpiGbl_GpeValid [NUM_GPE];
ACPI_EXTERN UINT8 AcpiGbl_GpeValid [ACPI_NUM_GPE];
/* AcpiEvent counter for debug only */
#ifdef ACPI_DEBUG
ACPI_EXTERN UINT32 AcpiGbl_EventCount[NUM_FIXED_EVENTS];
ACPI_EXTERN UINT32 AcpiGbl_EventCount[ACPI_NUM_FIXED_EVENTS];
#endif

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
* $Revision: 1.97 $
* $Revision: 1.100 $
*
*****************************************************************************/
@ -181,7 +181,7 @@ AcpiAmlConvertToString (
ACPI_STATUS
AcpiAmlConvertToTargetType (
OBJECT_TYPE_INTERNAL DestinationType,
ACPI_OBJECT_TYPE8 DestinationType,
ACPI_OPERAND_OBJECT **ObjDesc,
ACPI_WALK_STATE *WalkState);
@ -191,7 +191,7 @@ AcpiAmlConvertToTargetType (
*/
ACPI_STATUS
AcpiAmlReadField (
AcpiAmlExtractFromField (
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 BufferLength,
@ -201,7 +201,7 @@ AcpiAmlReadField (
UINT32 ByteGranularity);
ACPI_STATUS
AcpiAmlWriteField (
AcpiAmlInsertIntoField (
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 BufferLength,
@ -217,25 +217,65 @@ AcpiAmlSetupField (
UINT32 FieldBitWidth);
ACPI_STATUS
AcpiAmlReadFieldData (
AcpiAmlReadFieldDatum (
ACPI_OPERAND_OBJECT *ObjDesc,
UINT32 FieldByteOffset,
UINT32 FieldBitWidth,
UINT32 *Value);
ACPI_STATUS
AcpiAmlAccessNamedField (
AcpiAmlCommonAccessField (
UINT32 Mode,
ACPI_NAMESPACE_NODE *FieldNode,
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 Length);
UINT32 BufferLength);
ACPI_STATUS
AcpiAmlAccessIndexField (
UINT32 Mode,
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 BufferLength);
ACPI_STATUS
AcpiAmlAccessBankField (
UINT32 Mode,
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 BufferLength);
ACPI_STATUS
AcpiAmlAccessRegionField (
UINT32 Mode,
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 BufferLength);
ACPI_STATUS
AcpiAmlAccessBufferField (
UINT32 Mode,
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
UINT32 BufferLength);
ACPI_STATUS
AcpiAmlReadDataFromField (
ACPI_OPERAND_OBJECT *ObjDesc,
ACPI_OPERAND_OBJECT **RetBufferDesc);
ACPI_STATUS
AcpiAmlWriteDataToField (
ACPI_OPERAND_OBJECT *SourceDesc,
ACPI_OPERAND_OBJECT *ObjDesc);
/*
* ammisc - ACPI AML (p-code) execution - specific opcodes
*/
ACPI_STATUS
AcpiAmlExecCreateField (
AcpiAmlCreateBufferField (
UINT8 *AmlPtr,
UINT32 AmlLength,
ACPI_NAMESPACE_NODE *Node,
@ -326,11 +366,17 @@ AcpiAmlUnlinkMutex (
*/
ACPI_STATUS
AcpiAmlPrepDefFieldValue (
AcpiAmlPrepCommonFieldObject (
ACPI_OPERAND_OBJECT *ObjDesc,
UINT8 FieldFlags,
UINT32 FieldPosition,
UINT32 FieldLength);
ACPI_STATUS
AcpiAmlPrepRegionFieldValue (
ACPI_NAMESPACE_NODE *Node,
ACPI_HANDLE Region,
UINT8 FieldFlags,
UINT8 FieldAttribute,
UINT32 FieldPosition,
UINT32 FieldLength);
@ -341,17 +387,15 @@ AcpiAmlPrepBankFieldValue (
ACPI_NAMESPACE_NODE *BankRegisterNode,
UINT32 BankVal,
UINT8 FieldFlags,
UINT8 FieldAttribute,
UINT32 FieldPosition,
UINT32 FieldLength);
ACPI_STATUS
AcpiAmlPrepIndexFieldValue (
ACPI_NAMESPACE_NODE *Node,
ACPI_HANDLE IndexReg,
ACPI_HANDLE DataReg,
ACPI_NAMESPACE_NODE *IndexReg,
ACPI_NAMESPACE_NODE *DataReg,
UINT8 FieldFlags,
UINT8 FieldAttribute,
UINT32 FieldPosition,
UINT32 FieldLength);
@ -471,7 +515,7 @@ AcpiAmlResolveObjectToValue (
ACPI_WALK_STATE *WalkState);
ACPI_STATUS
AcpiAmlGetFieldUnitValue (
AcpiAmlGetBufferFieldValue (
ACPI_OPERAND_OBJECT *FieldDesc,
ACPI_OPERAND_OBJECT *ResultDesc);
@ -533,7 +577,7 @@ AcpiAmlExecNameSegment (
ACPI_STATUS
AcpiAmlGetNameString (
OBJECT_TYPE_INTERNAL DataType,
ACPI_OBJECT_TYPE8 DataType,
UINT8 *InAmlAddress,
NATIVE_CHAR **OutNameString,
UINT32 *OutNameLength);
@ -580,13 +624,13 @@ AcpiAmlStoreObjectToObject (
ACPI_STATUS
AcpiAmlResolveObject (
ACPI_OPERAND_OBJECT **SourceDescPtr,
OBJECT_TYPE_INTERNAL TargetType,
ACPI_OBJECT_TYPE8 TargetType,
ACPI_WALK_STATE *WalkState);
ACPI_STATUS
AcpiAmlStoreObject (
ACPI_OPERAND_OBJECT *SourceDesc,
OBJECT_TYPE_INTERNAL TargetType,
ACPI_OBJECT_TYPE8 TargetType,
ACPI_OPERAND_OBJECT **TargetDescPtr,
ACPI_WALK_STATE *WalkState);
@ -621,7 +665,7 @@ AcpiAmlCopyDataToNamedField (
ACPI_NAMESPACE_NODE *Node);
ACPI_STATUS
AcpiAmlCopyIntegerToFieldUnit (
AcpiAmlCopyIntegerToBufferField (
ACPI_OPERAND_OBJECT *SourceDesc,
ACPI_OPERAND_OBJECT *TargetDesc);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
* $Revision: 1.85 $
* $Revision: 1.116 $
*
*****************************************************************************/
@ -9,8 +9,8 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
* reserved.
* Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.
* All rights reserved.
*
* 2. License
*
@ -118,20 +118,21 @@
#define __ACLOCAL_H__
#define WAIT_FOREVER ((UINT32) -1)
#define WAIT_FOREVER ((UINT32) -1)
typedef void* ACPI_MUTEX;
typedef UINT32 ACPI_MUTEX_HANDLE;
typedef void* ACPI_MUTEX;
typedef UINT32 ACPI_MUTEX_HANDLE;
/* Object descriptor types */
#define ACPI_CACHED_OBJECT 0x11 /* ORed in when object is cached */
#define ACPI_DESC_TYPE_STATE 0x22
#define ACPI_DESC_TYPE_WALK 0x44
#define ACPI_DESC_TYPE_PARSER 0x66
#define ACPI_DESC_TYPE_INTERNAL 0x88
#define ACPI_DESC_TYPE_NAMED 0xAA
#define ACPI_CACHED_OBJECT 0x11 /* ORed in when object is cached */
#define ACPI_DESC_TYPE_STATE 0x22
#define ACPI_DESC_TYPE_WALK 0x44
#define ACPI_DESC_TYPE_PARSER 0x66
#define ACPI_DESC_TYPE_INTERNAL 0x88
#define ACPI_DESC_TYPE_NAMED 0xAA
/*****************************************************************************
@ -144,47 +145,51 @@ typedef UINT32 ACPI_MUTEX_HANDLE;
/*
* Predefined handles for the mutex objects used within the subsystem
* All mutex objects are automatically created by AcpiCmMutexInitialize.
*
* The acquire/release ordering protocol is implied via this list. Mutexes
* with a lower value must be acquired before mutexes with a higher value.
*
* NOTE: any changes here must be reflected in the AcpiGbl_MutexNames table also!
*/
#define ACPI_MTX_HARDWARE 0
#define ACPI_MTX_MEMORY 1
#define ACPI_MTX_CACHES 2
#define ACPI_MTX_TABLES 3
#define ACPI_MTX_PARSER 4
#define ACPI_MTX_DISPATCHER 5
#define ACPI_MTX_INTERPRETER 6
#define ACPI_MTX_EXECUTE 7
#define ACPI_MTX_NAMESPACE 8
#define ACPI_MTX_EVENTS 9
#define ACPI_MTX_OP_REGIONS 10
#define ACPI_MTX_DEBUG_CMD_READY 11
#define ACPI_MTX_DEBUG_CMD_COMPLETE 12
#define ACPI_MTX_EXECUTE 0
#define ACPI_MTX_INTERPRETER 1
#define ACPI_MTX_PARSER 2
#define ACPI_MTX_DISPATCHER 3
#define ACPI_MTX_TABLES 4
#define ACPI_MTX_OP_REGIONS 5
#define ACPI_MTX_NAMESPACE 6
#define ACPI_MTX_EVENTS 7
#define ACPI_MTX_HARDWARE 8
#define ACPI_MTX_CACHES 9
#define ACPI_MTX_MEMORY 10
#define ACPI_MTX_DEBUG_CMD_COMPLETE 11
#define ACPI_MTX_DEBUG_CMD_READY 12
#define MAX_MTX 12
#define NUM_MTX MAX_MTX+1
#define MAX_MTX 12
#define NUM_MTX MAX_MTX+1
#ifdef ACPI_DEBUG
#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER)
#ifdef DEFINE_ACPI_GLOBALS
/* Names for the mutexes used in the subsystem */
static NATIVE_CHAR *AcpiGbl_MutexNames[] =
{
"ACPI_MTX_Hardware",
"ACPI_MTX_Memory",
"ACPI_MTX_Caches",
"ACPI_MTX_Tables",
"ACPI_MTX_Execute",
"ACPI_MTX_Interpreter",
"ACPI_MTX_Parser",
"ACPI_MTX_Dispatcher",
"ACPI_MTX_Interpreter",
"ACPI_MTX_Execute",
"ACPI_MTX_Tables",
"ACPI_MTX_OpRegions",
"ACPI_MTX_Namespace",
"ACPI_MTX_Events",
"ACPI_MTX_OpRegions",
"ACPI_MTX_Hardware",
"ACPI_MTX_Caches",
"ACPI_MTX_Memory",
"ACPI_MTX_DebugCmdComplete",
"ACPI_MTX_DebugCmdReady",
"ACPI_MTX_DebugCmdComplete"
};
#endif
@ -197,26 +202,32 @@ typedef struct AcpiMutexInfo
{
ACPI_MUTEX Mutex;
UINT32 UseCount;
BOOLEAN Locked;
UINT32 OwnerId;
} ACPI_MUTEX_INFO;
/* This owner ID means that the mutex is not in use (unlocked) */
#define ACPI_MUTEX_NOT_ACQUIRED (UINT32) (-1)
/* Lock flag parameter for various interfaces */
#define ACPI_MTX_DO_NOT_LOCK 0
#define ACPI_MTX_LOCK 1
#define ACPI_MTX_DO_NOT_LOCK 0
#define ACPI_MTX_LOCK 1
typedef UINT16 ACPI_OWNER_ID;
#define OWNER_TYPE_TABLE 0x0
#define OWNER_TYPE_METHOD 0x1
#define FIRST_METHOD_ID 0x0000
#define FIRST_TABLE_ID 0x8000
typedef UINT16 ACPI_OWNER_ID;
#define OWNER_TYPE_TABLE 0x0
#define OWNER_TYPE_METHOD 0x1
#define FIRST_METHOD_ID 0x0000
#define FIRST_TABLE_ID 0x8000
/* TBD: [Restructure] get rid of the need for this! */
#define TABLE_ID_DSDT (ACPI_OWNER_ID) 0x8000
#define TABLE_ID_DSDT (ACPI_OWNER_ID) 0x8000
/*****************************************************************************
*
@ -266,9 +277,13 @@ typedef struct acpi_node
/* Node flags */
#define ANOBJ_AML_ATTACHMENT 0x1
#define ANOBJ_END_OF_PEER_LIST 0x2
#define ANOBJ_DATA_WIDTH_32 0x4 /* Parent table is 64-bits */
#define ANOBJ_AML_ATTACHMENT 0x01
#define ANOBJ_END_OF_PEER_LIST 0x02
#define ANOBJ_DATA_WIDTH_32 0x04 /* Parent table is 64-bits */
#define ANOBJ_METHOD_ARG 0x08
#define ANOBJ_METHOD_LOCAL 0x10
#define ANOBJ_METHOD_NO_RETVAL 0x20
#define ANOBJ_METHOD_SOME_NO_RETVAL 0x40
/*
@ -312,19 +327,23 @@ typedef struct
/*
* Predefined Namespace items
*/
#define ACPI_MAX_ADDRESS_SPACE 255
#define ACPI_NUM_ADDRESS_SPACES 256
typedef struct
{
NATIVE_CHAR *Name;
ACPI_OBJECT_TYPE Type;
ACPI_OBJECT_TYPE8 Type;
NATIVE_CHAR *Val;
} PREDEFINED_NAMES;
/* Object types used during package copies */
#define ACPI_COPY_TYPE_SIMPLE 0
#define ACPI_COPY_TYPE_PACKAGE 1
/*****************************************************************************
*
* Event typedefs and structs
@ -334,19 +353,19 @@ typedef struct
/* Status bits. */
#define ACPI_STATUS_PMTIMER 0x0001
#define ACPI_STATUS_GLOBAL 0x0020
#define ACPI_STATUS_POWER_BUTTON 0x0100
#define ACPI_STATUS_SLEEP_BUTTON 0x0200
#define ACPI_STATUS_RTC_ALARM 0x0400
#define ACPI_STATUS_PMTIMER 0x0001
#define ACPI_STATUS_GLOBAL 0x0020
#define ACPI_STATUS_POWER_BUTTON 0x0100
#define ACPI_STATUS_SLEEP_BUTTON 0x0200
#define ACPI_STATUS_RTC_ALARM 0x0400
/* Enable bits. */
#define ACPI_ENABLE_PMTIMER 0x0001
#define ACPI_ENABLE_GLOBAL 0x0020
#define ACPI_ENABLE_POWER_BUTTON 0x0100
#define ACPI_ENABLE_SLEEP_BUTTON 0x0200
#define ACPI_ENABLE_RTC_ALARM 0x0400
#define ACPI_ENABLE_PMTIMER 0x0001
#define ACPI_ENABLE_GLOBAL 0x0020
#define ACPI_ENABLE_POWER_BUTTON 0x0100
#define ACPI_ENABLE_SLEEP_BUTTON 0x0200
#define ACPI_ENABLE_RTC_ALARM 0x0400
/*
@ -355,10 +374,10 @@ typedef struct
typedef struct
{
ADDRESS_SPACE_HANDLER Handler;
ACPI_ADR_SPACE_HANDLER Handler;
void *Context;
} ACPI_ADDRESS_SPACE_INFO;
} ACPI_ADR_SPACE_INFO;
/* Values and addresses of the GPE registers (both banks) */
@ -374,8 +393,8 @@ typedef struct
} ACPI_GPE_REGISTERS;
#define ACPI_GPE_LEVEL_TRIGGERED 1
#define ACPI_GPE_EDGE_TRIGGERED 2
#define ACPI_GPE_LEVEL_TRIGGERED 1
#define ACPI_GPE_EDGE_TRIGGERED 2
/* Information about each particular GPE level */
@ -385,7 +404,7 @@ typedef struct
UINT8 Type; /* Level or Edge */
ACPI_HANDLE MethodHandle; /* Method handle for direct (fast) execution */
GPE_HANDLER Handler; /* Address of handler, if any */
ACPI_GPE_HANDLER Handler; /* Address of handler, if any */
void *Context; /* Context to be passed to handler */
} ACPI_GPE_LEVEL_INFO;
@ -395,7 +414,7 @@ typedef struct
typedef struct
{
FIXED_EVENT_HANDLER Handler; /* Address of handler. */
ACPI_EVENT_HANDLER Handler; /* Address of handler. */
void *Context; /* Context to be passed to handler */
} ACPI_FIXED_EVENT_INFO;
@ -419,16 +438,18 @@ typedef struct
****************************************************************************/
#define CONTROL_NORMAL 0xC0
#define CONTROL_CONDITIONAL_EXECUTING 0xC1
#define CONTROL_PREDICATE_EXECUTING 0xC2
#define CONTROL_PREDICATE_FALSE 0xC3
#define CONTROL_PREDICATE_TRUE 0xC4
#define CONTROL_NORMAL 0xC0
#define CONTROL_CONDITIONAL_EXECUTING 0xC1
#define CONTROL_PREDICATE_EXECUTING 0xC2
#define CONTROL_PREDICATE_FALSE 0xC3
#define CONTROL_PREDICATE_TRUE 0xC4
/* Forward declaration */
/* Forward declarations */
struct acpi_walk_state;
struct acpi_parse_obj ;
struct acpi_walk_list;
struct acpi_parse_obj;
struct acpi_obj_mutex;
#define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\
@ -455,6 +476,23 @@ typedef struct acpi_update_state
} ACPI_UPDATE_STATE;
/*
* Pkg state - used to traverse nested package structures
*/
typedef struct acpi_pkg_state
{
ACPI_STATE_COMMON
union acpi_operand_obj *SourceObject;
union acpi_operand_obj *DestObject;
struct acpi_walk_state *WalkState;
void *ThisTargetObj;
UINT32 NumPackages;
UINT16 Index;
} ACPI_PKG_STATE;
/*
* Control state - one per if/else and while constructs.
* Allows nesting of these constructs
@ -471,7 +509,6 @@ typedef struct acpi_control_state
/*
* Scope state - current scope during namespace lookups
*/
typedef struct acpi_scope_state
{
ACPI_STATE_COMMON
@ -492,6 +529,35 @@ typedef struct acpi_pscope_state
} ACPI_PSCOPE_STATE;
/*
* Result values - used to accumulate the results of nested
* AML arguments
*/
typedef struct acpi_result_values
{
ACPI_STATE_COMMON
union acpi_operand_obj *ObjDesc [OBJ_NUM_OPERANDS];
UINT8 NumResults;
UINT8 LastInsert;
} ACPI_RESULT_VALUES;
/*
* Notify info - used to pass info to the deferred notify
* handler/dispatcher.
*/
typedef struct acpi_notify_info
{
ACPI_STATE_COMMON
ACPI_NAMESPACE_NODE *Node;
union acpi_operand_obj *HandlerObj;
} ACPI_NOTIFY_INFO;
/* Generic state is union of structs above */
typedef union acpi_gen_state
{
ACPI_COMMON_STATE Common;
@ -499,6 +565,9 @@ typedef union acpi_gen_state
ACPI_UPDATE_STATE Update;
ACPI_SCOPE_STATE Scope;
ACPI_PSCOPE_STATE ParseScope;
ACPI_PKG_STATE Pkg;
ACPI_RESULT_VALUES Results;
ACPI_NOTIFY_INFO Notify;
} ACPI_GENERIC_STATE;
@ -522,19 +591,18 @@ ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
*
****************************************************************************/
#define ACPI_OP_CLASS_MASK 0x1F
#define ACPI_OP_ARGS_MASK 0x20
#define ACPI_OP_TYPE_MASK 0xC0
#define ACPI_OP_CLASS_MASK 0x1F
#define ACPI_OP_ARGS_MASK 0x20
#define ACPI_OP_TYPE_MASK 0xC0
#define ACPI_OP_TYPE_OPCODE 0x00
#define ACPI_OP_TYPE_ASCII 0x40
#define ACPI_OP_TYPE_PREFIX 0x80
#define ACPI_OP_TYPE_UNKNOWN 0xC0
#define ACPI_OP_TYPE_OPCODE 0x00
#define ACPI_OP_TYPE_ASCII 0x40
#define ACPI_OP_TYPE_PREFIX 0x80
#define ACPI_OP_TYPE_UNKNOWN 0xC0
#define ACPI_GET_OP_CLASS(a) ((a)->Flags & ACPI_OP_CLASS_MASK)
#define ACPI_GET_OP_ARGS(a) ((a)->Flags & ACPI_OP_ARGS_MASK)
#define ACPI_GET_OP_TYPE(a) ((a)->Flags & ACPI_OP_TYPE_MASK)
#define ACPI_GET_OP_CLASS(a) ((a)->Flags & ACPI_OP_CLASS_MASK)
#define ACPI_GET_OP_ARGS(a) ((a)->Flags & ACPI_OP_ARGS_MASK)
#define ACPI_GET_OP_TYPE(a) ((a)->Flags & ACPI_OP_TYPE_MASK)
/*
@ -546,8 +614,9 @@ typedef struct acpi_opcode_info
UINT32 ParseArgs; /* Grammar/Parse time arguments */
UINT32 RuntimeArgs; /* Interpret time arguments */
DEBUG_ONLY_MEMBERS (
NATIVE_CHAR *Name) /* op name (debug only) */
#ifdef _OPCODE_NAMES
NATIVE_CHAR *Name; /* op name (debug only) */
#endif
} ACPI_OPCODE_INFO;
@ -574,7 +643,7 @@ typedef union acpi_parse_val
DEBUG_ONLY_MEMBERS (\
NATIVE_CHAR OpName[16]) /* op name (debug only) */\
/* NON-DEBUG members below: */\
ACPI_NAMESPACE_NODE *Node;/* for use by interpreter */\
ACPI_NAMESPACE_NODE *Node; /* for use by interpreter */\
ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\
@ -621,132 +690,6 @@ typedef struct acpi_parse_state
} ACPI_PARSE_STATE;
/*****************************************************************************
*
* Tree walking typedefs and structs
*
****************************************************************************/
/*
* Walk state - current state of a parse tree walk. Used for both a leisurely stroll through
* the tree (for whatever reason), and for control method execution.
*/
#define NEXT_OP_DOWNWARD 1
#define NEXT_OP_UPWARD 2
#define WALK_NON_METHOD 0
#define WALK_METHOD 1
#define WALK_METHOD_RESTART 2
typedef struct acpi_walk_state
{
UINT8 DataType; /* To differentiate various internal objs */\
ACPI_OWNER_ID OwnerId; /* Owner of objects created during the walk */
BOOLEAN LastPredicate; /* Result of last predicate */
UINT8 NextOpInfo; /* Info about NextOp */
UINT8 NumOperands; /* Stack pointer for Operands[] array */
UINT8 NumResults; /* Stack pointer for Results[] array */
UINT8 CurrentResult; /* */
struct acpi_walk_state *Next; /* Next WalkState in list */
ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */
/* TBD: Obsolete with removal of WALK procedure ? */
ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */
ACPI_PARSE_OBJECT *NextOp; /* next op to be processed */
ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */
ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */
ACPI_PARSE_STATE *ParserState; /* Current state of parser */
UINT8 *AmlLastWhile;
ACPI_PARSE_DOWNWARDS DescendingCallback;
ACPI_PARSE_UPWARDS AscendingCallback;
union acpi_operand_obj *ReturnDesc; /* Return object, if any */
union acpi_operand_obj *MethodDesc; /* Method descriptor if running a method */
struct acpi_node *MethodNode; /* Method Node if running a method */
ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */
struct acpi_node *MethodCallNode; /* Called method Node*/
union acpi_operand_obj *Operands[OBJ_NUM_OPERANDS]; /* Operands passed to the interpreter */
union acpi_operand_obj *Results[OBJ_NUM_OPERANDS]; /* Accumulated results */
struct acpi_node Arguments[MTH_NUM_ARGS]; /* Control method arguments */
struct acpi_node LocalVariables[MTH_NUM_LOCALS]; /* Control method locals */
UINT32 ParseFlags;
UINT8 WalkType;
UINT8 ReturnUsed;
UINT32 PrevArgTypes;
/* Debug support */
UINT32 MethodBreakpoint;
} ACPI_WALK_STATE;
/*
* Walk list - head of a tree of walk states. Multiple walk states are created when there
* are nested control methods executing.
*/
typedef struct acpi_walk_list
{
ACPI_WALK_STATE *WalkState;
} ACPI_WALK_LIST;
/* Info used by AcpiPsInitObjects */
typedef struct acpi_init_walk_info
{
UINT16 MethodCount;
UINT16 OpRegionCount;
UINT16 FieldCount;
UINT16 OpRegionInit;
UINT16 FieldInit;
UINT16 ObjectCount;
ACPI_TABLE_DESC *TableDesc;
} ACPI_INIT_WALK_INFO;
/* Info used by TBD */
typedef struct acpi_device_walk_info
{
UINT32 Flags;
UINT16 DeviceCount;
UINT16 Num_STA;
UINT16 Num_INI;
UINT16 Num_HID;
UINT16 Num_PCI;
ACPI_TABLE_DESC *TableDesc;
} ACPI_DEVICE_WALK_INFO;
/* TBD: [Restructure] Merge with struct above */
typedef struct acpi_walk_info
{
UINT32 DebugLevel;
UINT32 OwnerId;
} ACPI_WALK_INFO;
typedef struct acpi_get_devices_info
{
WALK_CALLBACK UserFunction;
void *Context;
NATIVE_CHAR *Hid;
} ACPI_GET_DEVICES_INFO;
/*****************************************************************************
*
* Hardware and PNP
@ -756,20 +699,21 @@ typedef struct acpi_get_devices_info
/* PCI */
#define PCI_ROOT_HID_STRING "PNP0A03"
#define PCI_ROOT_HID_VALUE 0x030AD041 /* EISAID("PNP0A03") */
#define PCI_ROOT_HID_STRING "PNP0A03"
#define PCI_ROOT_HID_VALUE 0x030AD041 /* EISAID("PNP0A03") */
/* Sleep states */
#define SLWA_DEBUG_LEVEL 4
#define GTS_CALL 0
#define GTS_WAKE 1
#define SLWA_DEBUG_LEVEL 4
#define GTS_CALL 0
#define GTS_WAKE 1
/* Cx States */
#define MAX_CX_STATE_LATENCY 0xFFFFFFFF
#define MAX_CX_STATES 4
#define MAX_CX_STATE_LATENCY 0xFFFFFFFF
#define MAX_CX_STATES 4
/*
* The #define's and enum below establish an abstract way of identifying what
@ -777,92 +721,115 @@ typedef struct acpi_get_devices_info
* values as they are used in switch statements and offset calculations.
*/
#define REGISTER_BLOCK_MASK 0xFF00
#define BIT_IN_REGISTER_MASK 0x00FF
#define PM1_EVT 0x0100
#define PM1_CONTROL 0x0200
#define PM2_CONTROL 0x0300
#define PM_TIMER 0x0400
#define PROCESSOR_BLOCK 0x0500
#define GPE0_STS_BLOCK 0x0600
#define GPE0_EN_BLOCK 0x0700
#define GPE1_STS_BLOCK 0x0800
#define GPE1_EN_BLOCK 0x0900
#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */
#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */
#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */
enum
{
/* PM1 status register ids */
#define REGISTER_BLOCK_ID(RegId) (RegId & REGISTER_BLOCK_MASK)
#define REGISTER_BIT_ID(RegId) (RegId & BIT_IN_REGISTER_MASK)
#define REGISTER_OFFSET(RegId) (RegId & BYTE_IN_REGISTER_MASK)
TMR_STS = (PM1_EVT | 0x01),
BM_STS,
GBL_STS,
PWRBTN_STS,
SLPBTN_STS,
RTC_STS,
WAK_STS,
/* PM1 enable register ids */
TMR_EN,
/* need to skip 1 enable number since there's no bus master enable register */
GBL_EN = (PM1_EVT | 0x0A),
PWRBTN_EN,
SLPBTN_EN,
RTC_EN,
/* PM1 control register ids */
SCI_EN = (PM1_CONTROL | 0x01),
BM_RLD,
GBL_RLS,
SLP_TYPE_A,
SLP_TYPE_B,
SLP_EN,
/* PM2 control register ids */
ARB_DIS = (PM2_CONTROL | 0x01),
/* PM Timer register ids */
TMR_VAL = (PM_TIMER | 0x01),
GPE0_STS = (GPE0_STS_BLOCK | 0x01),
GPE0_EN = (GPE0_EN_BLOCK | 0x01),
GPE1_STS = (GPE1_STS_BLOCK | 0x01),
GPE1_EN = (GPE0_EN_BLOCK | 0x01),
/* Last register value is one less than LAST_REG */
LAST_REG
};
/*
* Access Rule
* To access a Register Bit:
* -> Use Bit Name (= Register Block Id | Bit Id) defined in the enum.
*
* To access a Register:
* -> Use Register Id (= Register Block Id | Register Offset)
*/
#define TMR_STS_MASK 0x0001
#define BM_STS_MASK 0x0010
#define GBL_STS_MASK 0x0020
#define PWRBTN_STS_MASK 0x0100
#define SLPBTN_STS_MASK 0x0200
#define RTC_STS_MASK 0x0400
#define WAK_STS_MASK 0x8000
/*
* Register Block Id
*/
#define PM1_STS 0x0100
#define PM1_EN 0x0200
#define PM1_CONTROL 0x0300
#define PM1A_CONTROL 0x0400
#define PM1B_CONTROL 0x0500
#define PM2_CONTROL 0x0600
#define PM_TIMER 0x0700
#define PROCESSOR_BLOCK 0x0800
#define GPE0_STS_BLOCK 0x0900
#define GPE0_EN_BLOCK 0x0A00
#define GPE1_STS_BLOCK 0x0B00
#define GPE1_EN_BLOCK 0x0C00
#define SMI_CMD_BLOCK 0x0D00
#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK | PWRBTN_STS_MASK | \
SLPBTN_STS_MASK | RTC_STS_MASK | WAK_STS_MASK)
/*
* Address space bitmasks for mmio or io spaces
*/
#define TMR_EN_MASK 0x0001
#define GBL_EN_MASK 0x0020
#define PWRBTN_EN_MASK 0x0100
#define SLPBTN_EN_MASK 0x0200
#define RTC_EN_MASK 0x0400
#define SMI_CMD_ADDRESS_SPACE 0x01
#define PM1_BLK_ADDRESS_SPACE 0x02
#define PM2_CNT_BLK_ADDRESS_SPACE 0x04
#define PM_TMR_BLK_ADDRESS_SPACE 0x08
#define GPE0_BLK_ADDRESS_SPACE 0x10
#define GPE1_BLK_ADDRESS_SPACE 0x20
#define SCI_EN_MASK 0x0001
#define BM_RLD_MASK 0x0002
#define GBL_RLS_MASK 0x0004
#define SLP_TYPE_X_MASK 0x1C00
#define SLP_EN_MASK 0x2000
/*
* Control bit definitions
*/
#define TMR_STS (PM1_STS | 0x01)
#define BM_STS (PM1_STS | 0x02)
#define GBL_STS (PM1_STS | 0x03)
#define PWRBTN_STS (PM1_STS | 0x04)
#define SLPBTN_STS (PM1_STS | 0x05)
#define RTC_STS (PM1_STS | 0x06)
#define WAK_STS (PM1_STS | 0x07)
#define ARB_DIS_MASK 0x0001
#define TMR_EN (PM1_EN | 0x01)
/* no BM_EN */
#define GBL_EN (PM1_EN | 0x03)
#define PWRBTN_EN (PM1_EN | 0x04)
#define SLPBTN_EN (PM1_EN | 0x05)
#define RTC_EN (PM1_EN | 0x06)
#define WAK_EN (PM1_EN | 0x07)
#define SCI_EN (PM1_CONTROL | 0x01)
#define BM_RLD (PM1_CONTROL | 0x02)
#define GBL_RLS (PM1_CONTROL | 0x03)
#define SLP_TYPE_A (PM1_CONTROL | 0x04)
#define SLP_TYPE_B (PM1_CONTROL | 0x05)
#define SLP_EN (PM1_CONTROL | 0x06)
#define ARB_DIS (PM2_CONTROL | 0x01)
#define TMR_VAL (PM_TIMER | 0x01)
#define GPE0_STS (GPE0_STS_BLOCK | 0x01)
#define GPE0_EN (GPE0_EN_BLOCK | 0x01)
#define GPE1_STS (GPE1_STS_BLOCK | 0x01)
#define GPE1_EN (GPE1_EN_BLOCK | 0x01)
#define TMR_STS_MASK 0x0001
#define BM_STS_MASK 0x0010
#define GBL_STS_MASK 0x0020
#define PWRBTN_STS_MASK 0x0100
#define SLPBTN_STS_MASK 0x0200
#define RTC_STS_MASK 0x0400
#define WAK_STS_MASK 0x8000
#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \
| PWRBTN_STS_MASK | SLPBTN_STS_MASK \
| RTC_STS_MASK | WAK_STS_MASK)
#define TMR_EN_MASK 0x0001
#define GBL_EN_MASK 0x0020
#define PWRBTN_EN_MASK 0x0100
#define SLPBTN_EN_MASK 0x0200
#define RTC_EN_MASK 0x0400
#define SCI_EN_MASK 0x0001
#define BM_RLD_MASK 0x0002
#define GBL_RLS_MASK 0x0004
#define SLP_TYPE_X_MASK 0x1C00
#define SLP_EN_MASK 0x2000
#define ARB_DIS_MASK 0x0001
#define TMR_VAL_MASK 0xFFFFFFFF
#define GPE0_STS_MASK
#define GPE0_EN_MASK
@ -871,65 +838,63 @@ enum
#define GPE1_EN_MASK
#define ACPI_READ 1
#define ACPI_WRITE 2
#define LOW_BYTE 0x00FF
#define ONE_BYTE 0x08
#ifndef SET
#define SET 1
#endif
#ifndef CLEAR
#define CLEAR 0
#endif
#define ACPI_READ 1
#define ACPI_WRITE 2
/* Plug and play */
/* Pnp and ACPI data */
#define VERSION_NO 0x01
#define LOGICAL_DEVICE_ID 0x02
#define COMPATIBLE_DEVICE_ID 0x03
#define IRQ_FORMAT 0x04
#define DMA_FORMAT 0x05
#define START_DEPENDENT_TAG 0x06
#define END_DEPENDENT_TAG 0x07
#define IO_PORT_DESCRIPTOR 0x08
#define FIXED_LOCATION_IO_DESCRIPTOR 0x09
#define RESERVED_TYPE0 0x0A
#define RESERVED_TYPE1 0x0B
#define RESERVED_TYPE2 0x0C
#define RESERVED_TYPE3 0x0D
#define SMALL_VENDOR_DEFINED 0x0E
#define END_TAG 0x0F
/*****************************************************************************
*
* Resource descriptors
*
****************************************************************************/
/* Pnp and ACPI data */
#define MEMORY_RANGE_24 0x81
#define ISA_MEMORY_RANGE 0x81
#define LARGE_VENDOR_DEFINED 0x84
#define EISA_MEMORY_RANGE 0x85
#define MEMORY_RANGE_32 0x85
#define FIXED_EISA_MEMORY_RANGE 0x86
#define FIXED_MEMORY_RANGE_32 0x86
/* ResourceType values */
/* ACPI only data */
#define RESOURCE_TYPE_MEMORY_RANGE 0
#define RESOURCE_TYPE_IO_RANGE 1
#define RESOURCE_TYPE_BUS_NUMBER_RANGE 2
#define DWORD_ADDRESS_SPACE 0x87
#define WORD_ADDRESS_SPACE 0x88
#define EXTENDED_IRQ 0x89
/*
* Small resource descriptors
*/
#define RESOURCE_DESC_SMALL_MASK 0x78
#define RESOURCE_DESC_IRQ_FORMAT 0x22
#define RESOURCE_DESC_DMA_FORMAT 0x2A
#define RESOURCE_DESC_START_DEPENDENT 0x30
#define RESOURCE_DESC_END_DEPENDENT 0x38
#define RESOURCE_DESC_IO_PORT 0x47
#define RESOURCE_DESC_FIXED_IO_PORT 0x4B
#define RESOURCE_DESC_SMALL_VENDOR 0x70
#define RESOURCE_DESC_END_TAG 0x79
/* MUST HAVES */
/*
* Large resource descriptors
*/
#define RESOURCE_DESC_MEMORY_24 0x81
#define RESOURCE_DESC_GENERAL_REGISTER 0x82
#define RESOURCE_DESC_LARGE_VENDOR 0x84
#define RESOURCE_DESC_MEMORY_32 0x85
#define RESOURCE_DESC_FIXED_MEMORY_32 0x86
#define RESOURCE_DESC_DWORD_ADDRESS_SPACE 0x87
#define RESOURCE_DESC_WORD_ADDRESS_SPACE 0x88
#define RESOURCE_DESC_EXTENDED_XRUPT 0x89
#define RESOURCE_DESC_QWORD_ADDRESS_SPACE 0x8A
#define DEVICE_ID_LENGTH 0x09
/* String version of device HIDs and UIDs */
#define ACPI_DEVICE_ID_LENGTH 0x09
typedef struct
{
NATIVE_CHAR Buffer[DEVICE_ID_LENGTH];
NATIVE_CHAR Buffer[ACPI_DEVICE_ID_LENGTH];
} ACPI_DEVICE_ID;
} DEVICE_ID;
/*****************************************************************************
@ -943,22 +908,22 @@ typedef struct
#ifdef ACPI_DEBUG
#define MEM_MALLOC 0
#define MEM_CALLOC 1
#define MAX_MODULE_NAME 16
#define MEM_MALLOC 0
#define MEM_CALLOC 1
#define MAX_MODULE_NAME 16
typedef struct AllocationInfo
typedef struct AcpiAllocationInfo
{
struct AllocationInfo *Previous;
struct AllocationInfo *Next;
void *Address;
UINT32 Size;
UINT32 Component;
UINT32 Line;
NATIVE_CHAR Module[MAX_MODULE_NAME];
UINT8 AllocType;
struct AcpiAllocationInfo *Previous;
struct AcpiAllocationInfo *Next;
void *Address;
UINT32 Size;
UINT32 Component;
UINT32 Line;
NATIVE_CHAR Module[MAX_MODULE_NAME];
UINT8 AllocType;
} ALLOCATION_INFO;
} ACPI_ALLOCATION_INFO;
#endif

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: macros.h - C macros for the entire subsystem.
* Name: acmacros.h - C macros for the entire subsystem.
* $Revision: 1.66 $
*
*****************************************************************************/
@ -9,8 +9,8 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
* reserved.
* Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.
* All rights reserved.
*
* 2. License
*
@ -114,13 +114,21 @@
*
*****************************************************************************/
#ifndef __MACROS_H__
#define __MACROS_H__
#ifndef __ACMACROS_H__
#define __ACMACROS_H__
/*
* Data manipulation macros
*/
#ifndef LODWORD
#define LODWORD(l) ((UINT32)(UINT64)(l))
#endif
#ifndef HIDWORD
#define HIDWORD(l) ((UINT32)((((UINT64)(l)) >> 32) & 0xFFFFFFFF))
#endif
#ifndef LOWORD
#define LOWORD(l) ((UINT16)(NATIVE_UINT)(l))
#endif
@ -154,6 +162,23 @@
#define HI_LIMIT(b) ((UINT8) (((b) & 0x00FF0000) >> 16))
#ifdef _IA16
/*
* For 16-bit addresses, we have to assume that the upper 32 bits
* are zero.
*/
#define ACPI_GET_ADDRESS(a) ((a).Lo)
#define ACPI_STORE_ADDRESS(a,b) {(a).Hi=0;(a).Lo=(b);}
#define ACPI_VALID_ADDRESS(a) ((a).Hi | (a).Lo)
#else
/*
* Full 64-bit address on 32-bit and 64-bit platforms
*/
#define ACPI_GET_ADDRESS(a) (a)
#define ACPI_STORE_ADDRESS(a,b) ((a)=(b))
#define ACPI_VALID_ADDRESS(a) (a)
#endif
/*
* Extract a byte of data using a pointer. Any more than a byte and we
* get into potential aligment issues -- see the STORE macros below
@ -174,6 +199,7 @@
#define MOVE_UNALIGNED16_TO_16(d,s) *(UINT16*)(d) = *(UINT16*)(s)
#define MOVE_UNALIGNED32_TO_32(d,s) *(UINT32*)(d) = *(UINT32*)(s)
#define MOVE_UNALIGNED16_TO_32(d,s) *(UINT32*)(d) = *(UINT16*)(s)
#define MOVE_UNALIGNED64_TO_64(d,s) *(UINT64*)(d) = *(UINT64*)(s)
#else
/*
@ -182,16 +208,25 @@
* the destination (or both) is/are unaligned.
*/
#define MOVE_UNALIGNED16_TO_16(d,s) {((char *)(d))[0] = ((char *)(s))[0];\
((char *)(d))[1] = ((char *)(s))[1];}
#define MOVE_UNALIGNED16_TO_16(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\
((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];}
#define MOVE_UNALIGNED32_TO_32(d,s) {((char *)(d))[0] = ((char *)(s))[0];\
((char *)(d))[1] = ((char *)(s))[1];\
((char *)(d))[2] = ((char *)(s))[2];\
((char *)(d))[3] = ((char *)(s))[3];}
#define MOVE_UNALIGNED32_TO_32(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\
((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\
((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\
((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];}
#define MOVE_UNALIGNED16_TO_32(d,s) {(*(UINT32*)(d)) = 0; MOVE_UNALIGNED16_TO_16(d,s);}
#define MOVE_UNALIGNED64_TO_64(d,s) {((UINT8 *)(d))[0] = ((UINT8 *)(s))[0];\
((UINT8 *)(d))[1] = ((UINT8 *)(s))[1];\
((UINT8 *)(d))[2] = ((UINT8 *)(s))[2];\
((UINT8 *)(d))[3] = ((UINT8 *)(s))[3];\
((UINT8 *)(d))[4] = ((UINT8 *)(s))[4];\
((UINT8 *)(d))[5] = ((UINT8 *)(s))[5];\
((UINT8 *)(d))[6] = ((UINT8 *)(s))[6];\
((UINT8 *)(d))[7] = ((UINT8 *)(s))[7];}
#endif
@ -199,9 +234,9 @@
* Fast power-of-two math macros for non-optimized compilers
*/
#define _DIV(value,PowerOf2) ((value) >> (PowerOf2))
#define _MUL(value,PowerOf2) ((value) << (PowerOf2))
#define _MOD(value,Divisor) ((value) & ((Divisor) -1))
#define _DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2)))
#define _MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2)))
#define _MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1)))
#define DIV_2(a) _DIV(a,1)
#define MUL_2(a) _MUL(a,1)
@ -219,6 +254,11 @@
#define MUL_16(a) _MUL(a,4)
#define MOD_16(a) _MOD(a,16)
/*
* Divide and Modulo
*/
#define ACPI_DIVIDE(n,d) ((n) / (d))
#define ACPI_MODULO(n,d) ((n) % (d))
/*
* Rounding macros (Power of two boundaries only)
@ -228,32 +268,62 @@
#define ROUND_UP(value,boundary) (((value) + ((boundary)-1)) & (~((boundary)-1)))
#define ROUND_DOWN_TO_32_BITS(a) ROUND_DOWN(a,4)
#define ROUND_DOWN_TO_64_BITS(a) ROUND_DOWN(a,8)
#define ROUND_DOWN_TO_NATIVE_WORD(a) ROUND_DOWN(a,ALIGNED_ADDRESS_BOUNDARY)
#define ROUND_UP_TO_32BITS(a) ROUND_UP(a,4)
#define ROUND_UP_TO_64BITS(a) ROUND_UP(a,8)
#define ROUND_UP_TO_NATIVE_WORD(a) ROUND_UP(a,ALIGNED_ADDRESS_BOUNDARY)
#define ROUND_PTR_UP_TO_4(a,b) ((b *)(((NATIVE_UINT)(a) + 3) & ~3))
#define ROUND_PTR_UP_TO_8(a,b) ((b *)(((NATIVE_UINT)(a) + 7) & ~7))
#define ROUND_BITS_UP_TO_BYTES(a) DIV_8((a) + 7)
#define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10)
#ifdef DEBUG_ASSERT
#undef DEBUG_ASSERT
#endif
/* Macros for GAS addressing */
#define ACPI_PCI_DEVICE_MASK (UINT64) 0x0000FFFF00000000
#define ACPI_PCI_FUNCTION_MASK (UINT64) 0x00000000FFFF0000
#define ACPI_PCI_REGISTER_MASK (UINT64) 0x000000000000FFFF
#define ACPI_PCI_FUNCTION(a) (UINT32) ((((a) & ACPI_PCI_FUNCTION_MASK) >> 16))
#define ACPI_PCI_DEVICE(a) (UINT32) ((((a) & ACPI_PCI_DEVICE_MASK) >> 32))
#ifndef _IA16
#define ACPI_PCI_REGISTER(a) (UINT32) (((a) & ACPI_PCI_REGISTER_MASK))
#define ACPI_PCI_DEVFUN(a) (UINT32) ((ACPI_PCI_DEVICE(a) << 16) | ACPI_PCI_FUNCTION(a))
#else
#define ACPI_PCI_REGISTER(a) (UINT32) (((a) & 0x0000FFFF))
#define ACPI_PCI_DEVFUN(a) (UINT32) ((((a) & 0xFFFF0000) >> 16))
#endif
/*
* An ACPI_HANDLE (which is actually an ACPI_NAMED_OBJECT*) can appear in some contexts,
* such as on apObjStack, where a pointer to an ACPI_OBJECT_INTERNAL can also
* An ACPI_HANDLE (which is actually an ACPI_NAMESPACE_NODE *) can appear in some contexts,
* such as on apObjStack, where a pointer to an ACPI_OPERAND_OBJECT can also
* appear. This macro is used to distinguish them.
*
* The DataType field is the first field in both structures.
*/
#define VALID_DESCRIPTOR_TYPE(d,t) (((ACPI_NAMED_OBJECT*)d)->DataType == t)
#define VALID_DESCRIPTOR_TYPE(d,t) (((ACPI_NAMESPACE_NODE *)d)->DataType == t)
/* Macro to test the object type */
#define IS_THIS_OBJECT_TYPE(d,t) (((ACPI_OBJECT_INTERNAL *)d)->Common.Type == (UINT8)t)
#define IS_THIS_OBJECT_TYPE(d,t) (((ACPI_OPERAND_OBJECT *)d)->Common.Type == (UINT8)t)
/* Macro to check the table flags for SINGLE or MULTIPLE tables are allowed */
#define IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0)
/*
* Macro to check if a pointer is within an ACPI table.
@ -277,9 +347,9 @@
*/
#ifdef ACPI_DEBUG
#define OP_INFO_ENTRY(Opcode,Flags,Name,PArgs,IArgs) {Opcode,Flags,PArgs,IArgs,Name}
#define OP_INFO_ENTRY(Flags,Name,PArgs,IArgs) {Flags,PArgs,IArgs,Name}
#else
#define OP_INFO_ENTRY(Opcode,Flags,Name,PArgs,IArgs) {Opcode,Flags,PArgs,IArgs}
#define OP_INFO_ENTRY(Flags,Name,PArgs,IArgs) {Flags,PArgs,IArgs}
#endif
#define ARG_TYPE_WIDTH 5
@ -304,14 +374,39 @@
#define ARGP_LIST5(a,b,c,d,e) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e))
#define ARGP_LIST6(a,b,c,d,e,f) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)|ARG_6(f))
#define GET_CURRENT_ARG_TYPE(List) (List & 0x1F)
#define INCREMENT_ARG_LIST(List) (List >>= ARG_TYPE_WIDTH)
#define GET_CURRENT_ARG_TYPE(List) (List & ((UINT32) 0x1F))
#define INCREMENT_ARG_LIST(List) (List >>= ((UINT32) ARG_TYPE_WIDTH))
/*
* Build a GAS structure from earlier ACPI table entries (V1.0 and 0.71 extensions)
*
* 1) Address space
* 2) Length in bytes -- convert to length in bits
* 3) Bit offset is zero
* 4) Reserved field is zero
* 5) Expand address to 64 bits
*/
#define ASL_BUILD_GAS_FROM_ENTRY(a,b,c,d) {a.AddressSpaceId = (UINT8) d;\
a.RegisterBitWidth = (UINT8) MUL_8 (b);\
a.RegisterBitOffset = 0;\
a.Reserved = 0;\
ACPI_STORE_ADDRESS (a.Address,c);}
/* ACPI V1.0 entries -- address space is always I/O */
#define ASL_BUILD_GAS_FROM_V1_ENTRY(a,b,c) ASL_BUILD_GAS_FROM_ENTRY(a,b,c,ACPI_ADR_SPACE_SYSTEM_IO)
/*
* Reporting macros that are never compiled out
*/
#define PARAM_LIST(pl) pl
/*
* Error reporting. These versions add callers module and line#. Since
* _THIS_MODULE gets compiled out when ACPI_DEBUG isn't defined, only
@ -320,29 +415,36 @@
#ifdef ACPI_DEBUG
#define REPORT_INFO(a) _ReportInfo(_THIS_MODULE,__LINE__,_COMPONENT,a)
#define REPORT_ERROR(a) _ReportError(_THIS_MODULE,__LINE__,_COMPONENT,a)
#define REPORT_WARNING(a) _ReportWarning(_THIS_MODULE,__LINE__,_COMPONENT,a)
#define REPORT_SUCCESS(a) _ReportSuccess(_THIS_MODULE,__LINE__,_COMPONENT,a)
#define REPORT_INFO(fp) {_ReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \
DebugPrintRaw PARAM_LIST(fp);}
#define REPORT_ERROR(fp) {_ReportError(_THIS_MODULE,__LINE__,_COMPONENT); \
DebugPrintRaw PARAM_LIST(fp);}
#define REPORT_WARNING(fp) {_ReportWarning(_THIS_MODULE,__LINE__,_COMPONENT); \
DebugPrintRaw PARAM_LIST(fp);}
#else
#define REPORT_INFO(a) _ReportInfo("",__LINE__,_COMPONENT,a)
#define REPORT_ERROR(a) _ReportError("",__LINE__,_COMPONENT,a)
#define REPORT_WARNING(a) _ReportWarning("",__LINE__,_COMPONENT,a)
#define REPORT_SUCCESS(a) _ReportSuccess("",__LINE__,_COMPONENT,a)
#define REPORT_INFO(fp) {_ReportInfo("ACPI",__LINE__,_COMPONENT); \
DebugPrintRaw PARAM_LIST(fp);}
#define REPORT_ERROR(fp) {_ReportError("ACPI",__LINE__,_COMPONENT); \
DebugPrintRaw PARAM_LIST(fp);}
#define REPORT_WARNING(fp) {_ReportWarning("ACPI",__LINE__,_COMPONENT); \
DebugPrintRaw PARAM_LIST(fp);}
#endif
/* Error reporting. These versions pass thru the module and line# */
#define _REPORT_INFO(a,b,c,d) _ReportInfo(a,b,c,d)
#define _REPORT_ERROR(a,b,c,d) _ReportError(a,b,c,d)
#define _REPORT_WARNING(a,b,c,d) _ReportWarning(a,b,c,d)
#define _REPORT_INFO(a,b,c,fp) {_ReportInfo(a,b,c); \
DebugPrintRaw PARAM_LIST(fp);}
#define _REPORT_ERROR(a,b,c,fp) {_ReportError(a,b,c); \
DebugPrintRaw PARAM_LIST(fp);}
#define _REPORT_WARNING(a,b,c,fp) {_ReportWarning(a,b,c); \
DebugPrintRaw PARAM_LIST(fp);}
/* Buffer dump macros */
#define DUMP_BUFFER(a,b) AcpiCmDumpBuffer((char *)a,b,DB_BYTE_DISPLAY,_COMPONENT)
#define DUMP_BUFFER(a,b) AcpiCmDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT)
/*
* Debug macros that are conditionally compiled
@ -350,7 +452,7 @@
#ifdef ACPI_DEBUG
#define MODULE_NAME(name) static char *_THIS_MODULE = name
#define MODULE_NAME(name) static char *_THIS_MODULE = name;
/*
* Function entry tracing.
@ -365,7 +467,7 @@
#define FUNCTION_TRACE_U32(a,b) char * _ProcName = a;\
FunctionTraceU32(_THIS_MODULE,__LINE__,_COMPONENT,a,(UINT32)b)
#define FUNCTION_TRACE_STR(a,b) char * _ProcName = a;\
FunctionTraceStr(_THIS_MODULE,__LINE__,_COMPONENT,a,(char *)b)
FunctionTraceStr(_THIS_MODULE,__LINE__,_COMPONENT,a,(NATIVE_CHAR *)b)
/*
* Function exit tracing.
* WARNING: These macros include a return statement. This is usually considered
@ -375,17 +477,19 @@
*/
#define return_VOID {FunctionExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName);return;}
#define return_ACPI_STATUS(s) {FunctionStatusExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,s);return(s);}
#define return_VALUE(s) {FunctionValueExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(NATIVE_UINT)s);return(s);}
#define return_PTR(s) {FunctionPtrExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(char *)s);return(s);}
#define return_VALUE(s) {FunctionValueExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,s);return(s);}
#define return_PTR(s) {FunctionPtrExit(_THIS_MODULE,__LINE__,_COMPONENT,_ProcName,(UINT8 *)s);return(s);}
/* Conditional execution */
#define DEBUG_EXEC(a) a;
#define DEBUG_EXEC(a) a
#define NORMAL_EXEC(a)
#define DEBUG_DEFINE(a) a;
#define DEBUG_ONLY_MEMBERS(a) a;
#define _OPCODE_NAMES
#define _VERBOSE_STRUCTURES
/* Stack and buffer dumping */
@ -397,6 +501,7 @@
#define DUMP_ENTRY(a,b) AcpiNsDumpEntry (a,b)
#define DUMP_TABLES(a,b) AcpiNsDumpTables(a,b)
#define DUMP_PATHNAME(a,b,c,d) AcpiNsDumpPathname(a,b,c,d)
#define DUMP_RESOURCE_LIST(a) AcpiRsDumpResourceList(a)
#define BREAK_MSG(a) AcpiOsBreakpoint (a)
/*
@ -418,8 +523,6 @@
*
*/
#define PARAM_LIST(pl) pl
#define TEST_DEBUG_SWITCH(lvl) if (((lvl) & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))
#define DEBUG_PRINT(lvl,fp) TEST_DEBUG_SWITCH(lvl) {\
@ -466,6 +569,7 @@
#define DUMP_ENTRY(a,b)
#define DUMP_TABLES(a,b)
#define DUMP_PATHNAME(a,b,c,d)
#define DUMP_RESOURCE_LIST(a)
#define DEBUG_PRINT(l,f)
#define DEBUG_PRINT_RAW(l,f)
#define BREAK_MSG(a)
@ -480,6 +584,17 @@
#endif
/*
* Some code only gets executed when the debugger is built in.
* Note that this is entirely independent of whether the
* DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not.
*/
#ifdef ENABLE_DEBUGGER
#define DEBUGGER_EXEC(a) a
#else
#define DEBUGGER_EXEC(a)
#endif
/*
* For 16-bit code, we want to shrink some things even though
@ -487,18 +602,12 @@
*/
#ifdef _IA16
#undef DEBUG_ONLY_MEMBERS
#undef _VERBOSE_STRUCTURES
#define DEBUG_ONLY_MEMBERS(a)
#undef OP_INFO_ENTRY
#define OP_INFO_ENTRY(Opcode,Flags,Name,PArgs,IArgs) {Opcode,Flags,PArgs,IArgs}
#endif
#ifndef ACPI_DEBUG
#define ADD_OBJECT_NAME(a,b)
#else
#ifdef ACPI_DEBUG
/*
* 1) Set name to blanks
@ -508,7 +617,81 @@
#define ADD_OBJECT_NAME(a,b) MEMSET (a->Common.Name, ' ', sizeof (a->Common.Name));\
STRNCPY (a->Common.Name, AcpiGbl_NsTypeNames[b], sizeof (a->Common.Name))
#else
#define ADD_OBJECT_NAME(a,b)
#endif
#endif /* MACROS_H */
/*
* Memory allocation tracking (DEBUG ONLY)
*/
#ifndef ACPI_DEBUG_TRACK_ALLOCATIONS
#define AcpiCmAddElementToAllocList(a,b,c,d,e,f)
#define AcpiCmDeleteElementFromAllocList(a,b,c,d)
#define AcpiCmDumpCurrentAllocations(a,b)
#define AcpiCmDumpAllocationInfo()
#define DECREMENT_OBJECT_METRICS(a)
#define INCREMENT_OBJECT_METRICS(a)
#define INITIALIZE_ALLOCATION_METRICS()
#define DECREMENT_NAME_TABLE_METRICS(a)
#define INCREMENT_NAME_TABLE_METRICS(a)
#else
#define INITIALIZE_ALLOCATION_METRICS() \
AcpiGbl_CurrentObjectCount = 0; \
AcpiGbl_CurrentObjectSize = 0; \
AcpiGbl_RunningObjectCount = 0; \
AcpiGbl_RunningObjectSize = 0; \
AcpiGbl_MaxConcurrentObjectCount = 0; \
AcpiGbl_MaxConcurrentObjectSize = 0; \
AcpiGbl_CurrentAllocSize = 0; \
AcpiGbl_CurrentAllocCount = 0; \
AcpiGbl_RunningAllocSize = 0; \
AcpiGbl_RunningAllocCount = 0; \
AcpiGbl_MaxConcurrentAllocSize = 0; \
AcpiGbl_MaxConcurrentAllocCount = 0; \
AcpiGbl_CurrentNodeCount = 0; \
AcpiGbl_CurrentNodeSize = 0; \
AcpiGbl_MaxConcurrentNodeCount = 0
#define DECREMENT_OBJECT_METRICS(a) \
AcpiGbl_CurrentObjectCount--; \
AcpiGbl_CurrentObjectSize -= a
#define INCREMENT_OBJECT_METRICS(a) \
AcpiGbl_CurrentObjectCount++; \
AcpiGbl_RunningObjectCount++; \
if (AcpiGbl_MaxConcurrentObjectCount < AcpiGbl_CurrentObjectCount) \
{ \
AcpiGbl_MaxConcurrentObjectCount = AcpiGbl_CurrentObjectCount; \
} \
AcpiGbl_RunningObjectSize += a; \
AcpiGbl_CurrentObjectSize += a; \
if (AcpiGbl_MaxConcurrentObjectSize < AcpiGbl_CurrentObjectSize) \
{ \
AcpiGbl_MaxConcurrentObjectSize = AcpiGbl_CurrentObjectSize; \
}
#define DECREMENT_NAME_TABLE_METRICS(a) \
AcpiGbl_CurrentNodeCount--; \
AcpiGbl_CurrentNodeSize -= (a)
#define INCREMENT_NAME_TABLE_METRICS(a) \
AcpiGbl_CurrentNodeCount++; \
AcpiGbl_CurrentNodeSize+= (a); \
if (AcpiGbl_MaxConcurrentNodeCount < AcpiGbl_CurrentNodeCount) \
{ \
AcpiGbl_MaxConcurrentNodeCount = AcpiGbl_CurrentNodeCount; \
}
#endif /* ACPI_DEBUG_TRACK_ALLOCATIONS */
#endif /* ACMACROS_H */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: namesp.h - Namespace subcomponent prototypes and defines
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
* $Revision: 1.105 $
*
*****************************************************************************/
@ -9,8 +9,8 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
* reserved.
* Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.
* All rights reserved.
*
* 2. License
*
@ -114,10 +114,8 @@
*
*****************************************************************************/
#ifndef __NAMESPACE_H__
#define __NAMESPACE_H__
#include "actables.h"
#ifndef __ACNAMESP_H__
#define __ACNAMESP_H__
/* To search the entire name space, pass this as SearchBase */
@ -149,49 +147,81 @@
#define NS_SEARCH_PARENT 0x01
#define NS_DONT_OPEN_SCOPE 0x02
#define NS_NO_PEER_SEARCH 0x04
#define NS_ERROR_IF_FOUND 0x08
#define NS_WALK_UNLOCK TRUE
#define NS_WALK_NO_UNLOCK FALSE
ACPI_STATUS
AcpiNsWalkNamespace (
OBJECT_TYPE_INTERNAL Type,
ACPI_HANDLE StartObject,
UINT32 MaxDepth,
BOOLEAN UnlockBeforeCallback,
WALK_CALLBACK UserFunction,
AcpiNsLoadNamespace (
void);
ACPI_STATUS
AcpiNsInitializeObjects (
void);
ACPI_STATUS
AcpiNsInitializeDevices (
void);
/* Namespace init - nsxfinit */
ACPI_STATUS
AcpiNsInitOneDevice (
ACPI_HANDLE ObjHandle,
UINT32 NestingLevel,
void *Context,
void **ReturnValue);
ACPI_STATUS
AcpiNsInitOneObject (
ACPI_HANDLE ObjHandle,
UINT32 Level,
void *Context,
void **ReturnValue);
ACPI_NAMED_OBJECT*
ACPI_STATUS
AcpiNsWalkNamespace (
ACPI_OBJECT_TYPE8 Type,
ACPI_HANDLE StartObject,
UINT32 MaxDepth,
BOOLEAN UnlockBeforeCallback,
ACPI_WALK_CALLBACK UserFunction,
void *Context,
void **ReturnValue);
ACPI_NAMESPACE_NODE *
AcpiNsGetNextObject (
OBJECT_TYPE_INTERNAL Type,
ACPI_NAMED_OBJECT *Parent,
ACPI_NAMED_OBJECT *Child);
ACPI_OBJECT_TYPE8 Type,
ACPI_NAMESPACE_NODE *Parent,
ACPI_NAMESPACE_NODE *Child);
ACPI_STATUS
AcpiNsDeleteNamespaceByOwner (
UINT16 TableId);
void
AcpiNsFreeTableEntry (
ACPI_NAMED_OBJECT *Entry);
/* Namespace loading - nsload */
ACPI_STATUS
AcpiNsOneCompleteParse (
UINT32 PassNumber,
ACPI_TABLE_DESC *TableDesc);
ACPI_STATUS
AcpiNsParseTable (
ACPI_TABLE_DESC *TableDesc,
ACPI_NAME_TABLE *Scope);
ACPI_NAMESPACE_NODE *Scope);
ACPI_STATUS
AcpiNsLoadTable (
ACPI_TABLE_DESC *TableDesc,
ACPI_NAMED_OBJECT *Entry);
ACPI_NAMESPACE_NODE *Node);
ACPI_STATUS
AcpiNsLoadTableByType (
@ -210,33 +240,38 @@ AcpiNsRootInitialize (
ACPI_STATUS
AcpiNsLookup (
ACPI_GENERIC_STATE *ScopeInfo,
char *Name,
OBJECT_TYPE_INTERNAL Type,
NATIVE_CHAR *Name,
ACPI_OBJECT_TYPE8 Type,
OPERATING_MODE InterpreterMode,
UINT32 Flags,
ACPI_WALK_STATE *WalkState,
ACPI_NAMED_OBJECT **RetEntry);
ACPI_NAMESPACE_NODE **RetNode);
/*
* Table allocation/deallocation - nsalloc
* Named object allocation/deallocation - nsalloc
*/
ACPI_NAME_TABLE *
AcpiNsAllocateNameTable (
UINT32 NumEntries);
ACPI_NAMESPACE_NODE *
AcpiNsCreateNode (
UINT32 AcpiName);
void
AcpiNsDeleteNode (
ACPI_NAMESPACE_NODE *Node);
ACPI_STATUS
AcpiNsDeleteNamespaceSubtree (
ACPI_NAMED_OBJECT *ParentHandle);
ACPI_NAMESPACE_NODE *ParentHandle);
void
AcpiNsDetachObject (
ACPI_HANDLE Object);
ACPI_NAMESPACE_NODE *Node);
void
AcpiNsDeleteNameTable (
ACPI_NAME_TABLE *NameTable);
AcpiNsDeleteChildren (
ACPI_NAMESPACE_NODE *Parent);
/*
@ -259,7 +294,7 @@ AcpiNsDeleteSubtree (
void
AcpiNsDumpTables (
ACPI_HANDLE SearchBase,
INT32 MaxDepth);
UINT32 MaxDepth);
void
AcpiNsDumpEntry (
@ -269,7 +304,7 @@ AcpiNsDumpEntry (
ACPI_STATUS
AcpiNsDumpPathname (
ACPI_HANDLE Handle,
char *Msg,
NATIVE_CHAR *Msg,
UINT32 Level,
UINT32 Component);
@ -279,7 +314,7 @@ AcpiNsDumpRootDevices (
void
AcpiNsDumpObjects (
OBJECT_TYPE_INTERNAL Type,
ACPI_OBJECT_TYPE8 Type,
UINT32 MaxDepth,
UINT32 OwnderId,
ACPI_HANDLE StartHandle);
@ -291,33 +326,33 @@ AcpiNsDumpObjects (
ACPI_STATUS
AcpiNsEvaluateByHandle (
ACPI_NAMED_OBJECT *ObjectNte,
ACPI_OBJECT_INTERNAL **Params,
ACPI_OBJECT_INTERNAL **ReturnObject);
ACPI_NAMESPACE_NODE *PrefixNode,
ACPI_OPERAND_OBJECT **Params,
ACPI_OPERAND_OBJECT **ReturnObject);
ACPI_STATUS
AcpiNsEvaluateByName (
char *Pathname,
ACPI_OBJECT_INTERNAL **Params,
ACPI_OBJECT_INTERNAL **ReturnObject);
NATIVE_CHAR *Pathname,
ACPI_OPERAND_OBJECT **Params,
ACPI_OPERAND_OBJECT **ReturnObject);
ACPI_STATUS
AcpiNsEvaluateRelative (
ACPI_NAMED_OBJECT *ObjectNte,
char *Pathname,
ACPI_OBJECT_INTERNAL **Params,
ACPI_OBJECT_INTERNAL **ReturnObject);
ACPI_NAMESPACE_NODE *PrefixNode,
NATIVE_CHAR *Pathname,
ACPI_OPERAND_OBJECT **Params,
ACPI_OPERAND_OBJECT **ReturnObject);
ACPI_STATUS
AcpiNsExecuteControlMethod (
ACPI_NAMED_OBJECT *MethodEntry,
ACPI_OBJECT_INTERNAL **Params,
ACPI_OBJECT_INTERNAL **ReturnObjDesc);
ACPI_NAMESPACE_NODE *MethodNode,
ACPI_OPERAND_OBJECT **Params,
ACPI_OPERAND_OBJECT **ReturnObjDesc);
ACPI_STATUS
AcpiNsGetObjectValue (
ACPI_NAMED_OBJECT *ObjectEntry,
ACPI_OBJECT_INTERNAL **ReturnObjDesc);
ACPI_NAMESPACE_NODE *ObjectNode,
ACPI_OPERAND_OBJECT **ReturnObjDesc);
/*
@ -326,26 +361,26 @@ AcpiNsGetObjectValue (
ACPI_NAME
AcpiNsFindParentName (
ACPI_NAMED_OBJECT *EntryToSearch);
ACPI_NAMESPACE_NODE *NodeToSearch);
BOOLEAN
AcpiNsExistDownstreamSibling (
ACPI_NAMED_OBJECT *ThisEntry);
ACPI_NAMESPACE_NODE *ThisNode);
/*
* Scope manipulation - nsscope
*/
INT32
UINT32
AcpiNsOpensScope (
OBJECT_TYPE_INTERNAL Type);
ACPI_OBJECT_TYPE8 Type);
char *
AcpiNsNameOfScope (
ACPI_NAME_TABLE *Scope);
NATIVE_CHAR *
AcpiNsGetTablePathname (
ACPI_NAMESPACE_NODE *Node);
char *
NATIVE_CHAR *
AcpiNsNameOfCurrentScope (
ACPI_WALK_STATE *WalkState);
@ -353,68 +388,34 @@ ACPI_STATUS
AcpiNsHandleToPathname (
ACPI_HANDLE ObjHandle,
UINT32 *BufSize,
char *UserBuffer);
NATIVE_CHAR *UserBuffer);
BOOLEAN
AcpiNsPatternMatch (
ACPI_NAMED_OBJECT *ObjEntry,
char *SearchFor);
ACPI_NAMESPACE_NODE *ObjNode,
NATIVE_CHAR *SearchFor);
ACPI_STATUS
AcpiNsNameCompare (
ACPI_HANDLE ObjHandle,
UINT32 Level,
void *Context,
void **ReturnValue);
AcpiNsGetNode (
NATIVE_CHAR *Pathname,
ACPI_NAMESPACE_NODE *InPrefixNode,
ACPI_NAMESPACE_NODE **OutNode);
void
AcpiNsLowFindNames (
ACPI_NAMED_OBJECT *ThisEntry,
char *SearchFor,
INT32 *Count,
ACPI_HANDLE List[],
INT32 MaxDepth);
UINT32
AcpiNsGetPathnameLength (
ACPI_NAMESPACE_NODE *Node);
ACPI_HANDLE *
AcpiNsFindNames (
char *SearchFor,
ACPI_HANDLE SearchBase,
INT32 MaxDepth);
ACPI_STATUS
AcpiNsGetNamedObject (
char *Pathname,
ACPI_NAME_TABLE *InScope,
ACPI_NAMED_OBJECT **OutNte);
/*
* Object management for NTEs - nsobject
*/
ACPI_STATUS
AcpiNsAttachMethod (
ACPI_HANDLE ObjHandle,
UINT8 *PcodeAddr,
UINT32 PcodeLength);
ACPI_STATUS
AcpiNsAttachObject (
ACPI_HANDLE ObjHandle,
ACPI_HANDLE Value,
OBJECT_TYPE_INTERNAL Type);
void *
AcpiNsCompareValue (
ACPI_HANDLE ObjHandle,
UINT32 Level,
void *ObjDesc);
ACPI_HANDLE
AcpiNsFindAttachedObject (
ACPI_OBJECT_INTERNAL *ObjDesc,
ACPI_HANDLE SearchBase,
INT32 MaxDepth);
ACPI_NAMESPACE_NODE *Node,
ACPI_OPERAND_OBJECT *Object,
ACPI_OBJECT_TYPE8 Type);
/*
@ -425,25 +426,25 @@ ACPI_STATUS
AcpiNsSearchAndEnter (
UINT32 EntryName,
ACPI_WALK_STATE *WalkState,
ACPI_NAME_TABLE *NameTable,
ACPI_NAMESPACE_NODE *Node,
OPERATING_MODE InterpreterMode,
OBJECT_TYPE_INTERNAL Type,
ACPI_OBJECT_TYPE8 Type,
UINT32 Flags,
ACPI_NAMED_OBJECT **RetEntry);
void
AcpiNsInitializeTable (
ACPI_NAME_TABLE *NewTable,
ACPI_NAME_TABLE *ParentScope,
ACPI_NAMED_OBJECT *ParentEntry);
ACPI_NAMESPACE_NODE **RetNode);
ACPI_STATUS
AcpiNsSearchOneScope (
AcpiNsSearchNode (
UINT32 EntryName,
ACPI_NAME_TABLE *NameTable,
OBJECT_TYPE_INTERNAL Type,
ACPI_NAMED_OBJECT **RetEntry,
NS_SEARCH_DATA *RetInfo);
ACPI_NAMESPACE_NODE *Node,
ACPI_OBJECT_TYPE8 Type,
ACPI_NAMESPACE_NODE **RetNode);
void
AcpiNsInstallNode (
ACPI_WALK_STATE *WalkState,
ACPI_NAMESPACE_NODE *ParentNode, /* Parent */
ACPI_NAMESPACE_NODE *Node, /* New Child*/
ACPI_OBJECT_TYPE8 Type);
/*
@ -452,64 +453,56 @@ AcpiNsSearchOneScope (
BOOLEAN
AcpiNsValidRootPrefix (
char Prefix);
NATIVE_CHAR Prefix);
BOOLEAN
AcpiNsValidPathSeparator (
char Sep);
NATIVE_CHAR Sep);
OBJECT_TYPE_INTERNAL
ACPI_OBJECT_TYPE8
AcpiNsGetType (
ACPI_HANDLE ObjHandle);
ACPI_NAMESPACE_NODE *Node);
void *
AcpiNsGetAttachedObject (
ACPI_HANDLE ObjHandle);
ACPI_NAMESPACE_NODE *Node);
INT32
UINT32
AcpiNsLocal (
OBJECT_TYPE_INTERNAL Type);
ACPI_OBJECT_TYPE8 Type);
ACPI_STATUS
AcpiNsInternalizeName (
char *DottedName,
char **ConvertedName);
NATIVE_CHAR *DottedName,
NATIVE_CHAR **ConvertedName);
ACPI_STATUS
AcpiNsExternalizeName (
UINT32 InternalNameLength,
char *InternalName,
NATIVE_CHAR *InternalName,
UINT32 *ConvertedNameLength,
char **ConvertedName);
NATIVE_CHAR **ConvertedName);
INT32
IsNsObject (
ACPI_OBJECT_INTERNAL *pOD);
INT32
AcpiNsMarkNS(
void);
ACPI_NAMED_OBJECT*
ACPI_NAMESPACE_NODE *
AcpiNsConvertHandleToEntry (
ACPI_HANDLE Handle);
ACPI_HANDLE
AcpiNsConvertEntryToHandle(
ACPI_NAMED_OBJECT*Nte);
ACPI_NAMESPACE_NODE *Node);
void
AcpiNsTerminate (
void);
ACPI_NAMED_OBJECT *
AcpiNsGetParentEntry (
ACPI_NAMED_OBJECT *ThisEntry);
ACPI_NAMESPACE_NODE *
AcpiNsGetParentObject (
ACPI_NAMESPACE_NODE *Node);
ACPI_NAMED_OBJECT *
AcpiNsGetNextValidEntry (
ACPI_NAMED_OBJECT *ThisEntry);
ACPI_NAMESPACE_NODE *
AcpiNsGetNextValidObject (
ACPI_NAMESPACE_NODE *Node);
#endif /* __NAMESPACE_H__ */
#endif /* __ACNAMESP_H__ */

View File

@ -1,7 +1,8 @@
/******************************************************************************
*
* Name: acobject.h - Definition of ACPI_OBJECT_INTERNAL (Internal object only)
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
* $Revision: 1.87 $
*
*****************************************************************************/
@ -9,8 +10,8 @@
*
* 1. Copyright Notice
*
* Some or all of this work - Copyright (c) 1999, Intel Corp. All rights
* reserved.
* Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp.
* All rights reserved.
*
* 2. License
*
@ -117,17 +118,14 @@
#ifndef _ACOBJECT_H
#define _ACOBJECT_H
#include "actypes.h"
#include "macros.h"
#include "internal.h"
/*
* The ACPI_OBJECT_INTERNAL is used to pass AML operands from the dispatcher
* The ACPI_OPERAND_OBJECT is used to pass AML operands from the dispatcher
* to the interpreter, and to keep track of the various handlers such as
* address space handlers and notify handlers. The object is a constant
* size in order to allow them to be cached and reused.
*
* All variants of the ACPI_OBJECT_INTERNAL are defined with the same
* All variants of the ACPI_OPERAND_OBJECT are defined with the same
* sequence of field types, with fields that are not used in a particular
* variant being named "Reserved". This is not strictly necessary, but
* may in some circumstances simplify understanding if these structures
@ -151,32 +149,31 @@
*/
#define ACPI_OBJECT_COMMON_HEADER /* Two 32-bit fields */\
UINT8 DataType; /* To differentiate various internal objs */\
UINT8 Type; /* ACPI_OBJECT_TYPE */\
UINT8 Size; /* Size of entire descriptor */\
UINT8 Flags;\
UINT16 ReferenceCount; /* For object deletion management */\
UINT16 AcpiCmFill2;\
union AcpiObjInternal *Next; \
#define ACPI_OBJECT_COMMON_HEADER /* SIZE/ALIGNMENT: 32-bits plus trailing 8-bit flag */\
UINT8 DataType; /* To differentiate various internal objs */\
UINT8 Type; /* ACPI_OBJECT_TYPE */\
UINT16 ReferenceCount; /* For object deletion management */\
UINT8 Flags; \
/* Defines for flag byte above */
#define AO_STATIC_ALLOCATION 0x1
#define AOPOBJ_STATIC_ALLOCATION 0x1
#define AOPOBJ_DATA_VALID 0x2
#define AOPOBJ_INITIALIZED 0x4
/*
* Common bitfield for the field objects
*/
#define ACPI_COMMON_FIELD_INFO /* Three 32-bit values */\
UINT32 Offset; /* Byte offset within containing object */\
UINT16 Length; /* # of bits in buffer */ \
UINT8 Granularity;\
UINT8 BitOffset; /* Bit offset within min read/write data unit */\
UINT8 Access; /* AccessType */\
UINT8 LockRule;\
UINT8 UpdateRule;\
UINT8 AccessAttribute;
#define ACPI_COMMON_FIELD_INFO /* SIZE/ALIGNMENT: 24 bits + three 32-bit values */\
UINT8 Granularity;\
UINT16 BitLength; /* Length of field in bits */\
UINT32 ByteOffset; /* Byte offset within containing object */\
UINT8 BitOffset; /* Bit offset within min read/write data unit (0-63) */\
UINT8 Access; /* AccessType (ByteAccess, WordAccess, etc*/\
UINT8 LockRule; /* Global Lock: Must Lock = 1 */\
UINT8 UpdateRule; /* How neighboring bits are handled */\
UINT32 Value; /* Value to store into the Bank or Index register */
/******************************************************************************
@ -189,61 +186,43 @@
typedef struct /* COMMON */
{
ACPI_OBJECT_COMMON_HEADER
UCHAR FirstNonCommonByte;
} ACPI_OBJECT_COMMON;
typedef struct /* CACHE_LIST */
{
ACPI_OBJECT_COMMON_HEADER
union acpi_operand_obj *Next; /* Link for object cache and internal lists*/
} ACPI_OBJECT_CACHE_LIST;
typedef struct /* NUMBER - has value */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Value;
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
ACPI_INTEGER Value;
void *Reserved_p1;
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
} ACPI_OBJECT_NUMBER;
} ACPI_OBJECT_INTEGER;
typedef struct /* STRING - has length and pointer */
typedef struct /* STRING - has length and pointer - Null terminated, ASCII characters only */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Length; /* # of bytes in string, excluding trailing null */
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
char *Pointer; /* String value in AML stream or in allocated space */
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
UINT32 Length;
NATIVE_CHAR *Pointer; /* String value in AML stream or in allocated space */
} ACPI_OBJECT_STRING;
typedef struct /* BUFFER - has length, sequence, and pointer */
typedef struct /* BUFFER - has length and pointer - not null terminated */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Length; /* # of bytes in buffer */
UINT32 Sequence; /* Sequential count of buffers created */
UINT32 Reserved3;
UINT32 Reserved4;
UINT8 *Pointer; /* points to the buffer in allocated space */
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
UINT32 Length;
UINT8 *Pointer; /* points to the buffer in allocated space */
} ACPI_OBJECT_BUFFER;
@ -252,50 +231,22 @@ typedef struct /* PACKAGE - has count, elements, next element */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Count; /* # of elements in package */
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
UINT32 Count; /* # of elements in package */
union AcpiObjInternal **Elements; /* Array of pointers to AcpiObjects */
union AcpiObjInternal **NextElement; /* used only while initializing */
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
union acpi_operand_obj **Elements; /* Array of pointers to AcpiObjects */
union acpi_operand_obj **NextElement; /* used only while initializing */
} ACPI_OBJECT_PACKAGE;
typedef struct /* FIELD UNIT */
{
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_FIELD_INFO
UINT32 Sequence; /* Container's sequence number */
union AcpiObjInternal *Container; /* Containing object (Buffer) */
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
} ACPI_OBJECT_FIELD_UNIT;
typedef struct /* DEVICE - has handle and notification handler/context */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Reserved1;
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
ACPI_HANDLE Handle;
union AcpiObjInternal *SysHandler; /* Handler for system notifies */
union AcpiObjInternal *DrvHandler; /* Handler for driver notifies */
union AcpiObjInternal *AddrHandler; /* Handler for Address space */
void *Reserved_p5;
union acpi_operand_obj *SysHandler; /* Handler for system notifies */
union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */
union acpi_operand_obj *AddrHandler; /* Handler for Address space */
} ACPI_OBJECT_DEVICE;
@ -303,19 +254,7 @@ typedef struct /* DEVICE - has handle and notification handler/context */
typedef struct /* EVENT */
{
ACPI_OBJECT_COMMON_HEADER
UINT16 LockCount;
UINT16 ThreadId;
UINT16 SignalCount;
UINT16 Fill1;
UINT32 Reserved3;
UINT32 Reserved4;
void *Semaphore;
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
void *Semaphore;
} ACPI_OBJECT_EVENT;
@ -325,67 +264,47 @@ typedef struct /* EVENT */
typedef struct /* METHOD */
{
ACPI_OBJECT_COMMON_HEADER
UINT8 MethodFlags;
UINT8 ParamCount;
UINT8 MethodFlags;
UINT8 ParamCount;
UINT8 Concurrency;
UINT8 Fill1;
UINT32 PcodeLength;
UINT32 TableLength;
ACPI_OWNER_ID OwningId;
UINT16 Reserved4;
UINT32 PcodeLength;
UINT8 *Pcode;
UINT8 *AcpiTable;
void *ParserOp;
void *Semaphore;
void *Reserved_p5;
void *Semaphore;
UINT8 *Pcode;
UINT8 Concurrency;
UINT8 ThreadCount;
ACPI_OWNER_ID OwningId;
} ACPI_OBJECT_METHOD;
typedef struct /* MUTEX */
typedef struct acpi_obj_mutex /* MUTEX */
{
ACPI_OBJECT_COMMON_HEADER
UINT16 SyncLevel;
UINT16 AcquisitionDepth;
UINT16 LockCount;
UINT16 ThreadId;
UINT16 SyncLevel;
UINT16 Fill1;
UINT32 Reserved3;
UINT32 Reserved4;
void *Semaphore;
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
void *Semaphore;
void *Owner;
union acpi_operand_obj *Prev; /* Link for list of acquired mutexes */
union acpi_operand_obj *Next; /* Link for list of acquired mutexes */
} ACPI_OBJECT_MUTEX;
/* Flags for Region */
#define INITIAL_REGION_FLAGS 0x0000 /* value set when the region is created */
#define REGION_AGRUMENT_DATA_VALID 0x0001 /* Addr/Len are set */
#define REGION_INITIALIZED 0x0002 /* region init handler has been called */
/* this includes _REG method, if any */
typedef struct /* REGION */
{
ACPI_OBJECT_COMMON_HEADER
UINT16 SpaceId;
UINT16 RegionFlags; /* bits defined above */
UINT32 Address;
UINT32 Length;
UINT32 Reserved4; /* Region Specific data (PCI _ADR) */
UINT8 SpaceId;
UINT32 Length;
ACPI_PHYSICAL_ADDRESS Address;
union acpi_operand_obj *Extra; /* Pointer to executable AML (in region definition) */
union AcpiObjInternal *Method; /* Associated control method */
union AcpiObjInternal *AddrHandler; /* Handler for system notifies */
union AcpiObjInternal *Link; /* Link in list of regions */
/* list is owned by AddrHandler */
ACPI_NAMED_OBJECT *REGMethod; /* _REG method for this region (if any) */
ACPI_NAMED_OBJECT *Nte; /* containing object */
union acpi_operand_obj *AddrHandler; /* Handler for system notifies */
ACPI_NAMESPACE_NODE *Node; /* containing object */
union acpi_operand_obj *Next;
} ACPI_OBJECT_REGION;
@ -394,16 +313,11 @@ typedef struct /* POWER RESOURCE - has Handle and notification handler/context*/
{
ACPI_OBJECT_COMMON_HEADER
UINT32 SystemLevel;
UINT32 ResourceOrder;
UINT32 Reserved3;
UINT32 Reserved4;
UINT32 SystemLevel;
UINT32 ResourceOrder;
ACPI_HANDLE Handle;
union AcpiObjInternal *SysHandler; /* Handler for system notifies */
union AcpiObjInternal *DrvHandler; /* Handler for driver notifies */
void *Reserved_p4;
void *Reserved_p5;
union acpi_operand_obj *SysHandler; /* Handler for system notifies */
union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */
} ACPI_OBJECT_POWER_RESOURCE;
@ -412,17 +326,13 @@ typedef struct /* PROCESSOR - has Handle and notification handler/context*/
{
ACPI_OBJECT_COMMON_HEADER
UINT32 ProcId;
ACPI_IO_ADDRESS PblkAddress;
UINT16 Fill1;
UINT32 PblkLength;
UINT32 Reserved4;
UINT32 ProcId;
UINT32 Length;
ACPI_IO_ADDRESS Address;
ACPI_HANDLE Handle;
union AcpiObjInternal *SysHandler; /* Handler for system notifies */
union AcpiObjInternal *DrvHandler; /* Handler for driver notifies */
union AcpiObjInternal *AddrHandler; /* Handler for Address space */
void *Reserved_p5;
union acpi_operand_obj *SysHandler; /* Handler for system notifies */
union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */
union acpi_operand_obj *AddrHandler; /* Handler for Address space */
} ACPI_OBJECT_PROCESSOR;
@ -431,90 +341,87 @@ typedef struct /* THERMAL ZONE - has Handle and Handler/Context */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Reserved1;
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
ACPI_HANDLE Handle;
union AcpiObjInternal *SysHandler; /* Handler for system notifies */
union AcpiObjInternal *DrvHandler; /* Handler for driver notifies */
union AcpiObjInternal *AddrHandler; /* Handler for Address space */
void *Reserved_p5;
union acpi_operand_obj *SysHandler; /* Handler for system notifies */
union acpi_operand_obj *DrvHandler; /* Handler for driver notifies */
union acpi_operand_obj *AddrHandler; /* Handler for Address space */
} ACPI_OBJECT_THERMAL_ZONE;
/*
* Internal types
* Fields. All share a common header/info field.
*/
typedef struct /* FIELD */
typedef struct /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
{
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_FIELD_INFO
UINT32 Reserved4;
union acpi_operand_obj *RegionObj; /* Containing Operation Region object */
/* (REGION/BANK fields only) */
} ACPI_OBJECT_FIELD_COMMON;
union AcpiObjInternal *Container; /* Containing object */
void *Reserved_p2;
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
} ACPI_OBJECT_FIELD;
typedef struct /* REGION FIELD */
{
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_FIELD_INFO
union acpi_operand_obj *RegionObj; /* Containing OpRegion object */
} ACPI_OBJECT_REGION_FIELD;
typedef struct /* BANK FIELD */
{
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_FIELD_INFO
UINT32 Value; /* Value to store into BankSelect */
ACPI_HANDLE BankSelect; /* Bank select register */
union AcpiObjInternal *Container; /* Containing object */
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
union acpi_operand_obj *RegionObj; /* Containing OpRegion object */
union acpi_operand_obj *BankRegisterObj; /* BankSelect Register object */
} ACPI_OBJECT_BANK_FIELD;
typedef struct /* INDEX FIELD */
{
/*
* No container pointer needed since the index and data register definitions
* will define how to access the respective registers
*/
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_FIELD_INFO
UINT32 Value; /* Value to store into Index register */
/*
* No "RegionObj" pointer needed since the Index and Data registers
* are each field definitions unto themselves.
*/
union acpi_operand_obj *IndexObj; /* Index register */
union acpi_operand_obj *DataObj; /* Data register */
ACPI_HANDLE Index; /* Index register */
ACPI_HANDLE Data; /* Data register */
void *Reserved_p3;
void *Reserved_p4;
void *Reserved_p5;
} ACPI_OBJECT_INDEX_FIELD;
/* The BufferField is different in that it is part of a Buffer, not an OpRegion */
typedef struct /* BUFFER FIELD */
{
ACPI_OBJECT_COMMON_HEADER
ACPI_COMMON_FIELD_INFO
union acpi_operand_obj *Extra; /* Pointer to executable AML (in field definition) */
ACPI_NAMESPACE_NODE *Node; /* Parent (containing) object node */
union acpi_operand_obj *BufferObj; /* Containing Buffer object */
} ACPI_OBJECT_BUFFER_FIELD;
/*
* Handlers
*/
typedef struct /* NOTIFY HANDLER */
{
ACPI_OBJECT_COMMON_HEADER
UINT32 Reserved1;
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
ACPI_NAMED_OBJECT *Nte; /* Parent device */
NOTIFY_HANDLER Handler;
void *Context;
void *Reserved_p4;
void *Reserved_p5;
ACPI_NAMESPACE_NODE *Node; /* Parent device */
ACPI_NOTIFY_HANDLER Handler;
void *Context;
} ACPI_OBJECT_NOTIFY_HANDLER;
@ -523,19 +430,20 @@ typedef struct /* NOTIFY HANDLER */
#define ADDR_HANDLER_DEFAULT_INSTALLED 0x1
typedef struct /* ADDRESS HANDLER */
{
ACPI_OBJECT_COMMON_HEADER
UINT16 SpaceId;
UINT16 Hflags;
ADDRESS_SPACE_HANDLER Handler;
UINT8 SpaceId;
UINT16 Hflags;
ACPI_ADR_SPACE_HANDLER Handler;
ACPI_NAMED_OBJECT *Nte; /* Parent device */
void *Context;
ADDRESS_SPACE_SETUP Setup;
union AcpiObjInternal *Link; /* Link to next handler on device */
union AcpiObjInternal *RegionList; /* regions using this handler */
ACPI_NAMESPACE_NODE *Node; /* Parent device */
void *Context;
ACPI_ADR_SPACE_SETUP Setup;
union acpi_operand_obj *RegionList; /* regions using this handler */
union acpi_operand_obj *Next;
} ACPI_OBJECT_ADDR_HANDLER;
@ -549,36 +457,53 @@ typedef struct /* Reference - Local object type */
{
ACPI_OBJECT_COMMON_HEADER
UINT16 OpCode;
UINT8 Fill1;
UINT8 TargetType; /* Used for IndexOp */
UINT32 Offset; /* Used for ArgOp, LocalOp, and IndexOp */
UINT32 Reserved3;
UINT32 Reserved4;
UINT8 TargetType; /* Used for IndexOp */
UINT16 Opcode;
UINT32 Offset; /* Used for ArgOp, LocalOp, and IndexOp */
void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OBJECT_INTERNAL */
ACPI_NAMED_OBJECT *Nte;
union AcpiObjInternal **Where;
void *Reserved_p4;
void *Reserved_p5;
void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */
ACPI_NAMESPACE_NODE *Node;
union acpi_operand_obj **Where;
} ACPI_OBJECT_REFERENCE;
/*
* Extra object is used as additional storage for types that
* have AML code in their declarations (TermArgs) that must be
* evaluated at run time.
*
* Currently: Region and FieldUnit types
*/
typedef struct /* EXTRA */
{
ACPI_OBJECT_COMMON_HEADER
UINT8 ByteFill1;
UINT16 WordFill1;
UINT32 PcodeLength;
UINT8 *Pcode;
ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */
void *RegionContext; /* Region-specific data */
} ACPI_OBJECT_EXTRA;
/******************************************************************************
*
* ACPI_OBJECT_INTERNAL Descriptor - a giant union of all of the above
* ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above
*
*****************************************************************************/
typedef union AcpiObjInternal
typedef union acpi_operand_obj
{
ACPI_OBJECT_COMMON Common;
ACPI_OBJECT_NUMBER Number;
ACPI_OBJECT_CACHE_LIST Cache;
ACPI_OBJECT_INTEGER Integer;
ACPI_OBJECT_STRING String;
ACPI_OBJECT_BUFFER Buffer;
ACPI_OBJECT_PACKAGE Package;
ACPI_OBJECT_FIELD_UNIT FieldUnit;
ACPI_OBJECT_BUFFER_FIELD BufferField;
ACPI_OBJECT_DEVICE Device;
ACPI_OBJECT_EVENT Event;
ACPI_OBJECT_METHOD Method;
@ -587,13 +512,15 @@ typedef union AcpiObjInternal
ACPI_OBJECT_POWER_RESOURCE PowerResource;
ACPI_OBJECT_PROCESSOR Processor;
ACPI_OBJECT_THERMAL_ZONE ThermalZone;
ACPI_OBJECT_FIELD Field;
ACPI_OBJECT_FIELD_COMMON CommonField;
ACPI_OBJECT_REGION_FIELD Field;
ACPI_OBJECT_BANK_FIELD BankField;
ACPI_OBJECT_INDEX_FIELD IndexField;
ACPI_OBJECT_REFERENCE Reference;
ACPI_OBJECT_NOTIFY_HANDLER NotifyHandler;
ACPI_OBJECT_ADDR_HANDLER AddrHandler;
ACPI_OBJECT_EXTRA Extra;
} ACPI_OBJECT_INTERNAL;
} ACPI_OPERAND_OBJECT;
#endif /* _ACOBJECT_H */