mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
This commit was generated by cvs2svn to compensate for changes in r84491,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
93b8a677a3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=84492
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acdebug.h - ACPI/AML debugger
|
||||
* $Revision: 47 $
|
||||
* $Revision: 49 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -126,7 +126,7 @@
|
||||
|
||||
extern int optind;
|
||||
extern NATIVE_CHAR *optarg;
|
||||
extern UINT8 *AmlPtr;
|
||||
extern UINT8 *AmlStart;
|
||||
extern UINT32 AmlLength;
|
||||
|
||||
extern BOOLEAN AcpiGbl_DbOpt_tables;
|
||||
@ -148,6 +148,7 @@ extern NATIVE_CHAR *AcpiGbl_DbDisasmIndent;
|
||||
extern UINT8 AcpiGbl_DbOutputFlags;
|
||||
extern UINT32 AcpiGbl_DbDebugLevel;
|
||||
extern UINT32 AcpiGbl_DbConsoleDebugLevel;
|
||||
extern ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr;
|
||||
|
||||
/*
|
||||
* Statistic globals
|
||||
@ -210,6 +211,10 @@ int
|
||||
AcpiDbInitialize (
|
||||
void);
|
||||
|
||||
void
|
||||
AcpiDbTerminate (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDbSingleStep (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acdispat.h - dispatcher (parser to interpreter interface)
|
||||
* $Revision: 40 $
|
||||
* $Revision: 44 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -177,20 +177,16 @@ AcpiDsExecEndControlOp (
|
||||
ACPI_STATUS
|
||||
AcpiDsGetPredicateValue (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
UINT32 HasResultObj);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsExecBeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsExecEndOp (
|
||||
ACPI_WALK_STATE *State,
|
||||
ACPI_PARSE_OBJECT *Op);
|
||||
ACPI_WALK_STATE *State);
|
||||
|
||||
|
||||
/* dsfield - Parser/Interpreter interface for AML fields */
|
||||
@ -219,39 +215,26 @@ AcpiDsCreateIndexField (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad1BeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad1EndOp (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad2BeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad2EndOp (
|
||||
ACPI_WALK_STATE *State,
|
||||
ACPI_PARSE_OBJECT *Op);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad3BeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
AcpiDsInitCallbacks (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad3EndOp (
|
||||
ACPI_WALK_STATE *State,
|
||||
ACPI_PARSE_OBJECT *Op);
|
||||
UINT32 PassNumber);
|
||||
|
||||
|
||||
/* dsmthdat - method data (locals/args) */
|
||||
@ -465,7 +448,7 @@ AcpiDsScopeStackClear (
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
|
||||
/* AcpiDswstate - parser WALK_STATE management routines */
|
||||
/* dswstate - parser WALK_STATE management routines */
|
||||
|
||||
ACPI_WALK_STATE *
|
||||
AcpiDsCreateWalkState (
|
||||
@ -474,6 +457,17 @@ AcpiDsCreateWalkState (
|
||||
ACPI_OPERAND_OBJECT *MthDesc,
|
||||
ACPI_WALK_LIST *WalkList);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsInitAmlWalk (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_NAMESPACE_NODE *MethodNode,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
ACPI_OPERAND_OBJECT **Params,
|
||||
ACPI_OPERAND_OBJECT **ReturnObjDesc,
|
||||
UINT32 PassNumber);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsObjStackDeleteAll (
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
@ -491,6 +485,11 @@ ACPI_WALK_STATE *
|
||||
AcpiDsPopWalkState (
|
||||
ACPI_WALK_LIST *WalkList);
|
||||
|
||||
void
|
||||
AcpiDsPushWalkState (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_WALK_LIST *WalkList);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsResultStackPop (
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acevents.h - Event subcomponent prototypes and defines
|
||||
* $Revision: 65 $
|
||||
* $Revision: 66 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -253,6 +253,20 @@ AcpiEvPciConfigRegionSetup (
|
||||
void *HandlerContext,
|
||||
void **RegionContext);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvCmosRegionSetup (
|
||||
ACPI_HANDLE Handle,
|
||||
UINT32 Function,
|
||||
void *HandlerContext,
|
||||
void **RegionContext);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvPciBarRegionSetup (
|
||||
ACPI_HANDLE Handle,
|
||||
UINT32 Function,
|
||||
void *HandlerContext,
|
||||
void **RegionContext);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvDefaultRegionSetup (
|
||||
ACPI_HANDLE Handle,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: achware.h -- hardware specific interfaces
|
||||
* $Revision: 55 $
|
||||
* $Revision: 56 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -196,21 +196,38 @@ AcpiHwGetBitShift (
|
||||
|
||||
void
|
||||
AcpiHwEnableGpe (
|
||||
UINT32 GpeIndex);
|
||||
UINT32 GpeNumber);
|
||||
|
||||
void
|
||||
AcpiHwEnableGpeForWakeup (
|
||||
UINT32 GpeNumber);
|
||||
|
||||
void
|
||||
AcpiHwDisableGpe (
|
||||
UINT32 GpeIndex);
|
||||
UINT32 GpeNumber);
|
||||
|
||||
void
|
||||
AcpiHwDisableGpeForWakeup (
|
||||
UINT32 GpeNumber);
|
||||
|
||||
void
|
||||
AcpiHwClearGpe (
|
||||
UINT32 GpeIndex);
|
||||
UINT32 GpeNumber);
|
||||
|
||||
void
|
||||
AcpiHwGetGpeStatus (
|
||||
UINT32 GpeNumber,
|
||||
ACPI_EVENT_STATUS *EventStatus);
|
||||
|
||||
void
|
||||
AcpiHwDisableNonWakeupGpes (
|
||||
void);
|
||||
|
||||
void
|
||||
AcpiHwEnableNonWakeupGpes (
|
||||
void);
|
||||
|
||||
|
||||
/* Sleep Prototypes */
|
||||
|
||||
ACPI_STATUS
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
|
||||
* $Revision: 106 $
|
||||
* $Revision: 110 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -271,26 +271,21 @@ AcpiExWriteDataToField (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExTriadic (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExHexadic (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateBufferField (
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExReconfiguration (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
@ -309,11 +304,15 @@ AcpiExCreatePowerResource (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateRegion (
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
UINT8 RegionSpace,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateTableRegion (
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateEvent (
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
@ -324,7 +323,7 @@ AcpiExCreateAlias (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateMethod (
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
UINT32 MethodFlags,
|
||||
ACPI_NAMESPACE_NODE *Method);
|
||||
@ -444,20 +443,15 @@ AcpiExSystemWaitSemaphore (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExMonadic1 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExMonadic2 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExMonadic2R (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
|
||||
/*
|
||||
@ -466,26 +460,19 @@ AcpiExMonadic2R (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic1 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic2 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic2R (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic2S (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
|
||||
/*
|
||||
@ -520,7 +507,7 @@ AcpiExGetBufferFieldValue (
|
||||
void
|
||||
AcpiExShowHexValue (
|
||||
UINT32 ByteCount,
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 LeadSpace);
|
||||
|
||||
|
||||
@ -738,6 +725,24 @@ AcpiExPciConfigSpaceHandler (
|
||||
void *HandlerContext,
|
||||
void *RegionContext);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCmosSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
void *RegionContext);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExPciBarSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
void *RegionContext);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExEmbeddedControllerSpaceHandler (
|
||||
UINT32 Function,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: aclocal.h - Internal data types used across the ACPI subsystem
|
||||
* $Revision: 130 $
|
||||
* $Revision: 134 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -131,7 +131,15 @@ 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_STATE 0x20
|
||||
#define ACPI_DESC_TYPE_STATE_UPDATE 0x21
|
||||
#define ACPI_DESC_TYPE_STATE_PACKAGE 0x22
|
||||
#define ACPI_DESC_TYPE_STATE_CONTROL 0x23
|
||||
#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x24
|
||||
#define ACPI_DESC_TYPE_STATE_PSCOPE 0x25
|
||||
#define ACPI_DESC_TYPE_STATE_WSCOPE 0x26
|
||||
#define ACPI_DESC_TYPE_STATE_RESULT 0x27
|
||||
#define ACPI_DESC_TYPE_STATE_NOTIFY 0x28
|
||||
#define ACPI_DESC_TYPE_WALK 0x44
|
||||
#define ACPI_DESC_TYPE_PARSER 0x66
|
||||
#define ACPI_DESC_TYPE_INTERNAL 0x88
|
||||
@ -307,7 +315,7 @@ typedef struct AcpiTableDesc
|
||||
struct AcpiTableDesc *InstalledDesc;
|
||||
ACPI_TABLE_HEADER *Pointer;
|
||||
void *BasePointer;
|
||||
UINT8 *AmlPointer;
|
||||
UINT8 *AmlStart;
|
||||
UINT64 PhysicalAddress;
|
||||
UINT32 AmlLength;
|
||||
UINT32 Length;
|
||||
@ -409,10 +417,11 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 Status; /* Current value of status reg */
|
||||
UINT8 Enable; /* Current value of enable reg */
|
||||
UINT16 StatusAddr; /* Address of status reg */
|
||||
UINT16 EnableAddr; /* Address of enable reg */
|
||||
UINT8 Status; /* Current value of status reg */
|
||||
UINT8 Enable; /* Current value of enable reg */
|
||||
UINT8 WakeEnable; /* Mask of bits to keep enabled when sleeping */
|
||||
UINT8 GpeBase; /* Base GPE number */
|
||||
|
||||
} ACPI_GPE_REGISTERS;
|
||||
@ -568,6 +577,16 @@ typedef struct acpi_result_values
|
||||
} ACPI_RESULT_VALUES;
|
||||
|
||||
|
||||
typedef
|
||||
ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (
|
||||
struct acpi_walk_state *WalkState,
|
||||
struct acpi_parse_obj **OutOp);
|
||||
|
||||
typedef
|
||||
ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
|
||||
struct acpi_walk_state *WalkState);
|
||||
|
||||
|
||||
/*
|
||||
* Notify info - used to pass info to the deferred notify
|
||||
* handler/dispatcher.
|
||||
@ -597,19 +616,6 @@ typedef union acpi_gen_state
|
||||
} ACPI_GENERIC_STATE;
|
||||
|
||||
|
||||
typedef
|
||||
ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (
|
||||
UINT16 Opcode,
|
||||
struct acpi_parse_obj *Op,
|
||||
struct acpi_walk_state *WalkState,
|
||||
struct acpi_parse_obj **OutOp);
|
||||
|
||||
typedef
|
||||
ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
|
||||
struct acpi_walk_state *WalkState,
|
||||
struct acpi_parse_obj *Op);
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Parser typedefs and structs
|
||||
@ -718,18 +724,24 @@ typedef struct acpi_parse2_obj
|
||||
* Parse state - one state per parser invocation and each control
|
||||
* method.
|
||||
*/
|
||||
|
||||
typedef struct acpi_parse_state
|
||||
{
|
||||
UINT32 AmlSize;
|
||||
UINT8 *AmlStart; /* first AML byte */
|
||||
UINT8 *Aml; /* next AML byte */
|
||||
UINT8 *AmlEnd; /* (last + 1) AML byte */
|
||||
UINT8 *PkgStart; /* current package begin */
|
||||
UINT8 *PkgEnd; /* current package end */
|
||||
ACPI_PARSE_OBJECT *StartOp; /* root of parse tree */
|
||||
|
||||
struct acpi_parse_obj *StartOp; /* root of parse tree */
|
||||
struct acpi_node *StartNode;
|
||||
ACPI_GENERIC_STATE *Scope; /* current scope */
|
||||
struct acpi_parse_state *Next;
|
||||
union acpi_gen_state *Scope; /* current scope */
|
||||
|
||||
|
||||
struct acpi_parse_obj *StartScope;
|
||||
|
||||
|
||||
|
||||
|
||||
} ACPI_PARSE_STATE;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acmacros.h - C macros for the entire subsystem.
|
||||
* $Revision: 94 $
|
||||
* $Revision: 96 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -288,11 +288,6 @@
|
||||
#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)
|
||||
@ -370,10 +365,6 @@
|
||||
|
||||
#define IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0)
|
||||
|
||||
/* Check if ACPI has been initialized properly */
|
||||
|
||||
#define ACPI_IS_INITIALIZATION_COMPLETE(s) {if (AcpiGbl_RootNode) s = AE_OK; else s=AE_NO_NAMESPACE;}
|
||||
|
||||
/*
|
||||
* Macro to check if a pointer is within an ACPI table.
|
||||
* Parameter (a) is the pointer to check. Parameter (b) must be defined
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
|
||||
* $Revision: 106 $
|
||||
* $Revision: 107 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -255,7 +255,7 @@ AcpiNsLookup (
|
||||
|
||||
ACPI_NAMESPACE_NODE *
|
||||
AcpiNsCreateNode (
|
||||
UINT32 AcpiName);
|
||||
UINT32 Name);
|
||||
|
||||
void
|
||||
AcpiNsDeleteNode (
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
|
||||
* $Revision: 90 $
|
||||
* $Revision: 92 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -189,6 +189,15 @@
|
||||
#define AFIELD_SINGLE_DATUM 0x1
|
||||
|
||||
|
||||
/*
|
||||
* Fields common to both Strings and Buffers
|
||||
*/
|
||||
#define ACPI_COMMON_BUFFER_INFO \
|
||||
UINT32 Length; \
|
||||
NATIVE_CHAR *Pointer; /* String value in AML stream or in allocated space */
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Individual Object Descriptors
|
||||
@ -223,9 +232,7 @@ typedef struct /* NUMBER - has value */
|
||||
typedef struct /* STRING - has length and pointer - Null terminated, ASCII characters only */
|
||||
{
|
||||
ACPI_OBJECT_COMMON_HEADER
|
||||
|
||||
UINT32 Length;
|
||||
NATIVE_CHAR *Pointer; /* String value in AML stream or in allocated space */
|
||||
ACPI_COMMON_BUFFER_INFO
|
||||
|
||||
} ACPI_OBJECT_STRING;
|
||||
|
||||
@ -233,9 +240,7 @@ typedef struct /* STRING - has length and pointer - Null terminated, ASCII chara
|
||||
typedef struct /* BUFFER - has length and pointer - not null terminated */
|
||||
{
|
||||
ACPI_OBJECT_COMMON_HEADER
|
||||
|
||||
UINT32 Length;
|
||||
UINT8 *Pointer; /* points to the buffer in allocated space */
|
||||
ACPI_COMMON_BUFFER_INFO
|
||||
|
||||
} ACPI_OBJECT_BUFFER;
|
||||
|
||||
@ -245,7 +250,6 @@ typedef struct /* PACKAGE - has count, elements, next element */
|
||||
ACPI_OBJECT_COMMON_HEADER
|
||||
|
||||
UINT32 Count; /* # of elements in package */
|
||||
|
||||
union acpi_operand_obj **Elements; /* Array of pointers to AcpiObjects */
|
||||
union acpi_operand_obj **NextElement; /* used only while initializing */
|
||||
|
||||
@ -279,10 +283,10 @@ typedef struct /* METHOD */
|
||||
UINT8 MethodFlags;
|
||||
UINT8 ParamCount;
|
||||
|
||||
UINT32 PcodeLength;
|
||||
UINT32 AmlLength;
|
||||
|
||||
void *Semaphore;
|
||||
UINT8 *Pcode;
|
||||
UINT8 *AmlStart;
|
||||
|
||||
UINT8 Concurrency;
|
||||
UINT8 ThreadCount;
|
||||
@ -493,8 +497,8 @@ typedef struct /* EXTRA */
|
||||
ACPI_OBJECT_COMMON_HEADER
|
||||
UINT8 ByteFill1;
|
||||
UINT16 WordFill1;
|
||||
UINT32 PcodeLength;
|
||||
UINT8 *Pcode;
|
||||
UINT32 AmlLength;
|
||||
UINT8 *AmlStart;
|
||||
ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */
|
||||
void *RegionContext; /* Region-specific data */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: acparser.h - AML Parser subcomponent prototypes and defines
|
||||
* $Revision: 51 $
|
||||
* $Revision: 54 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -212,8 +212,6 @@ AcpiPsGetOpcodeName (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsFindObject (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp);
|
||||
|
||||
@ -227,15 +225,7 @@ AcpiPsParseLoop (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsParseAml (
|
||||
ACPI_PARSE_OBJECT *StartScope,
|
||||
UINT8 *Aml,
|
||||
UINT32 AmlSize,
|
||||
UINT32 ParseFlags,
|
||||
ACPI_NAMESPACE_NODE *MethodNode,
|
||||
ACPI_OPERAND_OBJECT **Params,
|
||||
ACPI_OPERAND_OBJECT **CallerReturnDesc,
|
||||
ACPI_PARSE_DOWNWARDS DescendingCallback,
|
||||
ACPI_PARSE_UPWARDS AscendingCallback);
|
||||
ACPI_WALK_STATE *WalkState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiPsParseTable (
|
||||
@ -337,12 +327,6 @@ AcpiPsGetNextWalkOp (
|
||||
|
||||
/* psutils - parser utilities */
|
||||
|
||||
|
||||
ACPI_PARSE_STATE *
|
||||
AcpiPsCreateState (
|
||||
UINT8 *Aml,
|
||||
UINT32 AmlSize);
|
||||
|
||||
void
|
||||
AcpiPsInitOp (
|
||||
ACPI_PARSE_OBJECT *op,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acstruct.h - Internal structs
|
||||
* $Revision: 5 $
|
||||
* $Revision: 8 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -142,46 +142,51 @@ typedef struct acpi_walk_state
|
||||
UINT8 DataType; /* To differentiate various internal objs MUST BE FIRST!*/\
|
||||
ACPI_OWNER_ID OwnerId; /* Owner of objects created during the walk */
|
||||
BOOLEAN LastPredicate; /* Result of last predicate */
|
||||
UINT8 CurrentResult; /* */
|
||||
UINT8 NextOpInfo; /* Info about NextOp */
|
||||
UINT8 NumOperands; /* Stack pointer for Operands[] array */
|
||||
UINT8 CurrentResult; /* */
|
||||
UINT8 ReturnUsed;
|
||||
UINT8 WalkType;
|
||||
UINT16 CurrentSyncLevel; /* Mutex Sync (nested acquire) level */
|
||||
UINT16 Opcode; /* Current AML opcode */
|
||||
UINT32 ArgCount; /* push for fixed or var args */
|
||||
UINT32 AmlOffset;
|
||||
UINT32 ArgTypes;
|
||||
UINT32 MethodBreakpoint; /* For single stepping */
|
||||
UINT32 ParseFlags;
|
||||
UINT32 PrevArgTypes;
|
||||
|
||||
struct acpi_walk_state *Next; /* Next WalkState in list */
|
||||
|
||||
UINT8 *AmlLastWhile;
|
||||
struct acpi_node Arguments[MTH_NUM_ARGS]; /* Control method arguments */
|
||||
union acpi_operand_obj **CallerReturnDesc;
|
||||
ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */
|
||||
struct acpi_node LocalVariables[MTH_NUM_LOCALS]; /* Control method locals */
|
||||
struct acpi_node *MethodCallNode; /* Called method Node*/
|
||||
ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */
|
||||
union acpi_operand_obj *MethodDesc; /* Method descriptor if running a method */
|
||||
struct acpi_node *MethodNode; /* Method Node if running a method */
|
||||
ACPI_PARSE_OBJECT *Op; /* Current parser op */
|
||||
union acpi_operand_obj *Operands[OBJ_NUM_OPERANDS+1]; /* Operands passed to the interpreter (+1 for NULL terminator) */
|
||||
const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */
|
||||
ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */
|
||||
union acpi_operand_obj **Params;
|
||||
ACPI_PARSE_STATE ParserState; /* Current state of parser */
|
||||
union acpi_operand_obj *ResultObj;
|
||||
ACPI_GENERIC_STATE *Results; /* Stack of accumulated results */
|
||||
union acpi_operand_obj *ReturnDesc; /* Return object, if any */
|
||||
ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */
|
||||
|
||||
/* 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 *Results; /* Stack of accumulated results */
|
||||
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;
|
||||
const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */
|
||||
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 */
|
||||
struct acpi_node Arguments[MTH_NUM_ARGS]; /* Control method arguments */
|
||||
struct acpi_node LocalVariables[MTH_NUM_LOCALS]; /* Control method locals */
|
||||
struct acpi_walk_list *WalkList;
|
||||
UINT32 ParseFlags;
|
||||
UINT8 WalkType;
|
||||
UINT8 ReturnUsed;
|
||||
UINT16 Opcode; /* Current AML opcode */
|
||||
UINT32 PrevArgTypes;
|
||||
UINT16 CurrentSyncLevel; /* Mutex Sync (nested acquire) level */
|
||||
struct acpi_walk_state *Next; /* Next WalkState in list */
|
||||
|
||||
/* Debug support */
|
||||
|
||||
UINT32 MethodBreakpoint;
|
||||
|
||||
|
||||
} ACPI_WALK_STATE;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actypes.h - Common data types for the entire ACPI subsystem
|
||||
* $Revision: 187 $
|
||||
* $Revision: 192 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -159,9 +159,8 @@ typedef NATIVE_UINT ACPI_TBLPTR;
|
||||
typedef UINT64 ACPI_IO_ADDRESS;
|
||||
typedef UINT64 ACPI_PHYSICAL_ADDRESS;
|
||||
|
||||
#define ALIGNED_ADDRESS_BOUNDARY 0x00000008
|
||||
|
||||
/* (No hardware alignment support in IA64) */
|
||||
#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */
|
||||
#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */
|
||||
|
||||
|
||||
#elif _IA16
|
||||
@ -192,6 +191,7 @@ typedef char *ACPI_PHYSICAL_ADDRESS;
|
||||
|
||||
#define ALIGNED_ADDRESS_BOUNDARY 0x00000002
|
||||
#define _HW_ALIGNMENT_SUPPORT
|
||||
#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */
|
||||
|
||||
/*
|
||||
* (16-bit only) internal integers must be 32-bits, so
|
||||
@ -287,11 +287,18 @@ typedef void* ACPI_HANDLE; /* Actually a ptr to an
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 Lo;
|
||||
UINT32 Hi;
|
||||
UINT32 Lo;
|
||||
UINT32 Hi;
|
||||
|
||||
} UINT64_STRUCT;
|
||||
|
||||
typedef union
|
||||
{
|
||||
UINT64 Full;
|
||||
UINT64_STRUCT Part;
|
||||
|
||||
} UINT64_OVERLAY;
|
||||
|
||||
|
||||
/*
|
||||
* Acpi integer width. In ACPI version 1, integers are
|
||||
@ -311,6 +318,9 @@ typedef UINT32 ACPI_INTEGER;
|
||||
#define ACPI_MAX_BCD_DIGITS 8
|
||||
#define ACPI_MAX_DECIMAL_DIGITS 10
|
||||
|
||||
#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */
|
||||
|
||||
|
||||
#else
|
||||
|
||||
/* 64-bit integers */
|
||||
@ -322,6 +332,9 @@ typedef UINT64 ACPI_INTEGER;
|
||||
#define ACPI_MAX_BCD_DIGITS 16
|
||||
#define ACPI_MAX_DECIMAL_DIGITS 19
|
||||
|
||||
#ifdef _IA64
|
||||
#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@ -380,7 +393,7 @@ typedef UINT64 ACPI_INTEGER;
|
||||
#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 4
|
||||
#define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 5
|
||||
#define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 6
|
||||
#define ACPI_NOTIFY_POWER_FAULT (UINT8) 7
|
||||
#define ACPI_NOTIFY_POWER_FAULT (UINT8) 7
|
||||
|
||||
|
||||
/*
|
||||
@ -543,25 +556,37 @@ typedef UINT32 ACPI_EVENT_TYPE;
|
||||
#define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1
|
||||
#define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2
|
||||
|
||||
/*
|
||||
* GPEs
|
||||
*/
|
||||
#define ACPI_EVENT_ENABLE 0x1
|
||||
#define ACPI_EVENT_WAKE_ENABLE 0x2
|
||||
|
||||
#define ACPI_EVENT_DISABLE 0x1
|
||||
#define ACPI_EVENT_WAKE_DISABLE 0x2
|
||||
|
||||
|
||||
/*
|
||||
* AcpiEvent Status:
|
||||
* -------------
|
||||
* The encoding of ACPI_EVENT_STATUS is illustrated below.
|
||||
* Note that a set bit (1) indicates the property is TRUE
|
||||
* (e.g. if bit 0 is set then the event is enabled).
|
||||
* +---------------+-+-+
|
||||
* | Bits 31:2 |1|0|
|
||||
* +---------------+-+-+
|
||||
* | | |
|
||||
* | | +- Enabled?
|
||||
* | +--- Set?
|
||||
* +-------------+-+-+-+
|
||||
* | Bits 31:3 |2|1|0|
|
||||
* +-------------+-+-+-+
|
||||
* | | | |
|
||||
* | | | +- Enabled?
|
||||
* | | +--- Enabled for wake?
|
||||
* | +----- Set?
|
||||
* +----------- <Reserved>
|
||||
*/
|
||||
typedef UINT32 ACPI_EVENT_STATUS;
|
||||
|
||||
#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00
|
||||
#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01
|
||||
#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02
|
||||
#define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02
|
||||
#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04
|
||||
|
||||
|
||||
/* Notify types */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
|
||||
* $Revision: 112 $
|
||||
* $Revision: 115 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -317,12 +317,12 @@ AcpiUtCopyIobjectToEobject (
|
||||
ACPI_STATUS
|
||||
AcpiUtCopyEsimpleToIsimple(
|
||||
ACPI_OBJECT *UserObj,
|
||||
ACPI_OPERAND_OBJECT *Obj);
|
||||
ACPI_OPERAND_OBJECT **ReturnObj);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtCopyEobjectToIobject (
|
||||
ACPI_OBJECT *Obj,
|
||||
ACPI_OPERAND_OBJECT *InternalObj);
|
||||
ACPI_OPERAND_OBJECT **InternalObj);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtCopyISimpleToIsimple (
|
||||
@ -653,9 +653,23 @@ AcpiUtDeleteObjectCache (
|
||||
void);
|
||||
|
||||
/*
|
||||
* Ututils
|
||||
* utmisc
|
||||
*/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtDivide (
|
||||
ACPI_INTEGER *InDividend,
|
||||
ACPI_INTEGER *InDivisor,
|
||||
ACPI_INTEGER *OutQuotient,
|
||||
ACPI_INTEGER *OutRemainder);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtShortDivide (
|
||||
ACPI_INTEGER *InDividend,
|
||||
UINT32 Divisor,
|
||||
ACPI_INTEGER *OutQuotient,
|
||||
UINT32 *OutRemainder);
|
||||
|
||||
BOOLEAN
|
||||
AcpiUtValidAcpiName (
|
||||
UINT32 Name);
|
||||
@ -723,18 +737,13 @@ AcpiUtFree (
|
||||
NATIVE_CHAR *Module,
|
||||
UINT32 Line);
|
||||
|
||||
void
|
||||
AcpiUtInitStaticObject (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc);
|
||||
|
||||
|
||||
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
|
||||
void
|
||||
AcpiUtDumpAllocationInfo (
|
||||
void);
|
||||
|
||||
void
|
||||
AcpiUtDumpCurrentAllocations (
|
||||
AcpiUtDumpAllocations (
|
||||
UINT32 Component,
|
||||
NATIVE_CHAR *Module);
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbdisply - debug display commands
|
||||
* $Revision: 50 $
|
||||
* $Revision: 52 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -500,7 +500,6 @@ AcpiDbDisplayInternalObject (
|
||||
|
||||
else if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_INTERNAL))
|
||||
{
|
||||
AcpiOsPrintf ("<Obj> ");
|
||||
Type = ObjDesc->Common.Type;
|
||||
if (Type > INTERNAL_TYPE_MAX)
|
||||
{
|
||||
@ -516,31 +515,37 @@ AcpiDbDisplayInternalObject (
|
||||
switch (ObjDesc->Reference.Opcode)
|
||||
{
|
||||
case AML_ZERO_OP:
|
||||
AcpiOsPrintf ("[Const] Zero (0) [Null Target]", 0);
|
||||
AcpiOsPrintf ("[Const] Zero (0) [Null Target]", 0);
|
||||
break;
|
||||
|
||||
case AML_ONES_OP:
|
||||
AcpiOsPrintf ("[Const] Ones (0xFFFFFFFFFFFFFFFF) [No Limit]");
|
||||
AcpiOsPrintf ("[Const] Ones (0xFFFFFFFFFFFFFFFF) [No Limit]");
|
||||
break;
|
||||
|
||||
case AML_ONE_OP:
|
||||
AcpiOsPrintf ("[Const] One (1)");
|
||||
AcpiOsPrintf ("[Const] One (1)");
|
||||
break;
|
||||
|
||||
case AML_REVISION_OP:
|
||||
AcpiOsPrintf ("[Const] Revision (%X)", ACPI_CA_VERSION);
|
||||
break;
|
||||
|
||||
case AML_LOCAL_OP:
|
||||
AcpiOsPrintf ("[Local%d] ", ObjDesc->Reference.Offset);
|
||||
AcpiOsPrintf ("[Local%d]", ObjDesc->Reference.Offset);
|
||||
if (WalkState)
|
||||
{
|
||||
ObjDesc = WalkState->LocalVariables[ObjDesc->Reference.Offset].Object;
|
||||
AcpiOsPrintf (" %p", ObjDesc);
|
||||
AcpiDbDecodeInternalObject (ObjDesc);
|
||||
}
|
||||
break;
|
||||
|
||||
case AML_ARG_OP:
|
||||
AcpiOsPrintf ("[Arg%d] ", ObjDesc->Reference.Offset);
|
||||
AcpiOsPrintf ("[Arg%d] ", ObjDesc->Reference.Offset);
|
||||
if (WalkState)
|
||||
{
|
||||
ObjDesc = WalkState->Arguments[ObjDesc->Reference.Offset].Object;
|
||||
AcpiOsPrintf (" %p", ObjDesc);
|
||||
AcpiDbDecodeInternalObject (ObjDesc);
|
||||
}
|
||||
break;
|
||||
@ -561,6 +566,7 @@ AcpiDbDisplayInternalObject (
|
||||
break;
|
||||
|
||||
default:
|
||||
AcpiOsPrintf ("<Obj> ");
|
||||
AcpiOsPrintf (" ");
|
||||
AcpiDbDecodeInternalObject (ObjDesc);
|
||||
break;
|
||||
|
@ -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: 47 $
|
||||
* $Revision: 52 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -129,16 +129,18 @@
|
||||
MODULE_NAME ("dbfileio")
|
||||
|
||||
|
||||
/*
|
||||
* NOTE: this is here for lack of a better place. It is used in all
|
||||
* flavors of the debugger, need LCD file
|
||||
*/
|
||||
#ifdef ACPI_APPLICATION
|
||||
#include <stdio.h>
|
||||
FILE *AcpiGbl_DebugFile = NULL;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* NOTE: this is here for lack of a better place. It is used in all
|
||||
* flavors of the debugger, need LCD file
|
||||
*/
|
||||
ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr = NULL;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -269,7 +271,7 @@ AcpiDbLoadTable(
|
||||
UINT32 *TableLength)
|
||||
{
|
||||
ACPI_TABLE_HEADER TableHeader;
|
||||
UINT8 *AmlPtr;
|
||||
UINT8 *AmlStart;
|
||||
UINT32 AmlLength;
|
||||
UINT32 Actual;
|
||||
ACPI_STATUS Status;
|
||||
@ -309,7 +311,7 @@ AcpiDbLoadTable(
|
||||
/* Allocate a buffer for the table */
|
||||
|
||||
*TableLength = TableHeader.Length;
|
||||
*TablePtr = ACPI_MEM_ALLOCATE ((size_t) *TableLength);
|
||||
*TablePtr = AcpiOsAllocate ((size_t) *TableLength);
|
||||
if (!*TablePtr)
|
||||
{
|
||||
AcpiOsPrintf ("Could not allocate memory for ACPI table %4.4s (size=%X)\n",
|
||||
@ -318,8 +320,8 @@ AcpiDbLoadTable(
|
||||
}
|
||||
|
||||
|
||||
AmlPtr = (UINT8 *) *TablePtr + sizeof (TableHeader);
|
||||
AmlLength = *TableLength - sizeof (TableHeader);
|
||||
AmlStart = (UINT8 *) *TablePtr + sizeof (TableHeader);
|
||||
AmlLength = *TableLength - sizeof (TableHeader);
|
||||
|
||||
/* Copy the header to the buffer */
|
||||
|
||||
@ -327,7 +329,7 @@ AcpiDbLoadTable(
|
||||
|
||||
/* Get the rest of the table */
|
||||
|
||||
Actual = fread (AmlPtr, 1, (size_t) AmlLength, fp);
|
||||
Actual = fread (AmlStart, 1, (size_t) AmlLength, fp);
|
||||
if (Actual == AmlLength)
|
||||
{
|
||||
return (AE_OK);
|
||||
@ -336,12 +338,12 @@ AcpiDbLoadTable(
|
||||
if (Actual > 0)
|
||||
{
|
||||
AcpiOsPrintf ("Warning - reading table, asked for %X got %X\n", AmlLength, Actual);
|
||||
return (AE_OK);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
AcpiOsPrintf ("Error - could not read the table file\n");
|
||||
ACPI_MEM_FREE (*TablePtr);
|
||||
AcpiOsFree (*TablePtr);
|
||||
*TablePtr = NULL;
|
||||
*TableLength = 0;
|
||||
|
||||
@ -403,7 +405,7 @@ AeLocalLoadTable (
|
||||
{
|
||||
/* Uninstall table and free the buffer */
|
||||
|
||||
AcpiTbUninstallTable (TableInfo.InstalledDesc);
|
||||
AcpiTbDeleteAcpiTable (ACPI_TABLE_DSDT);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
#endif
|
||||
@ -431,7 +433,6 @@ AcpiDbLoadAcpiTable (
|
||||
#ifdef ACPI_APPLICATION
|
||||
FILE *fp;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_HEADER *TablePtr;
|
||||
UINT32 TableLength;
|
||||
|
||||
|
||||
@ -448,7 +449,7 @@ AcpiDbLoadAcpiTable (
|
||||
/* Get the entire file */
|
||||
|
||||
AcpiOsPrintf ("Loading Acpi table from file %s\n", Filename);
|
||||
Status = AcpiDbLoadTable (fp, &TablePtr, &TableLength);
|
||||
Status = AcpiDbLoadTable (fp, &AcpiGbl_DbTablePtr, &TableLength);
|
||||
fclose(fp);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -457,30 +458,28 @@ AcpiDbLoadAcpiTable (
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
||||
/* Attempt to recognize and install the table */
|
||||
Status = AeLocalLoadTable (TablePtr);
|
||||
|
||||
Status = AeLocalLoadTable (AcpiGbl_DbTablePtr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
if (Status == AE_EXIST)
|
||||
{
|
||||
AcpiOsPrintf ("Table %4.4s is already installed\n",
|
||||
&TablePtr->Signature);
|
||||
&AcpiGbl_DbTablePtr->Signature);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("Could not install table, %s\n",
|
||||
AcpiFormatException (Status));
|
||||
}
|
||||
|
||||
ACPI_MEM_FREE (TablePtr);
|
||||
ACPI_MEM_FREE (AcpiGbl_DbTablePtr);
|
||||
return (Status);
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("%4.4s at %p successfully installed and loaded\n",
|
||||
&TablePtr->Signature, TablePtr);
|
||||
&AcpiGbl_DbTablePtr->Signature, AcpiGbl_DbTablePtr);
|
||||
|
||||
AcpiGbl_AcpiHardwarePresent = FALSE;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbinput - user front-end to the AML debugger
|
||||
* $Revision: 68 $
|
||||
* $Revision: 72 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -138,11 +138,10 @@ NATIVE_CHAR AcpiGbl_DbParsedBuf[80];
|
||||
NATIVE_CHAR AcpiGbl_DbScopeBuf[40];
|
||||
NATIVE_CHAR AcpiGbl_DbDebugFilename[40];
|
||||
NATIVE_CHAR *AcpiGbl_DbArgs[DB_MAX_ARGS];
|
||||
NATIVE_CHAR *AcpiGbl_DbBuffer;
|
||||
NATIVE_CHAR *AcpiGbl_DbBuffer = NULL;
|
||||
NATIVE_CHAR *AcpiGbl_DbFilename = NULL;
|
||||
BOOLEAN AcpiGbl_DbOutputToFile = FALSE;
|
||||
|
||||
|
||||
UINT32 AcpiGbl_DbDebugLevel = ACPI_LV_VERBOSITY2;
|
||||
UINT32 AcpiGbl_DbConsoleDebugLevel = NORMAL_DEFAULT | ACPI_LV_TABLES;
|
||||
UINT8 AcpiGbl_DbOutputFlags = DB_CONSOLE_OUTPUT;
|
||||
@ -617,7 +616,7 @@ AcpiDbCommandDispatch (
|
||||
case CMD_ALLOCATIONS:
|
||||
|
||||
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
|
||||
AcpiUtDumpCurrentAllocations ((UINT32) -1, NULL);
|
||||
AcpiUtDumpAllocations ((UINT32) -1, NULL);
|
||||
#endif
|
||||
break;
|
||||
|
||||
@ -1009,7 +1008,6 @@ AcpiDbUserCommands (
|
||||
* because all the semaphores are deleted during termination
|
||||
*/
|
||||
AcpiTerminate ();
|
||||
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbutils - AML debugger utilities
|
||||
* $Revision: 43 $
|
||||
* $Revision: 44 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -369,17 +369,40 @@ AcpiDbSecondPassParse (
|
||||
ACPI_PARSE_OBJECT *StartOp;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT32 BaseAmlOffset;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
AcpiOsPrintf ("Pass two parse ....\n");
|
||||
|
||||
|
||||
while (Op)
|
||||
{
|
||||
if (Op->Opcode == AML_METHOD_OP)
|
||||
{
|
||||
Method = (ACPI_PARSE2_OBJECT *) Op;
|
||||
Status = AcpiPsParseAml (Op, Method->Data, Method->Length, 0,
|
||||
NULL, NULL, NULL, AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp);
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
||||
WalkState->ParserState.Aml =
|
||||
WalkState->ParserState.AmlStart = Method->Data;
|
||||
WalkState->ParserState.AmlEnd =
|
||||
WalkState->ParserState.PkgEnd = Method->Data + Method->Length;
|
||||
WalkState->ParserState.StartScope = Op;
|
||||
|
||||
WalkState->DescendingCallback = AcpiDsLoad1BeginOp;
|
||||
WalkState->AscendingCallback = AcpiDsLoad1EndOp;
|
||||
|
||||
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
|
||||
|
||||
BaseAmlOffset = (Method->Value.Arg)->AmlOffset + 1;
|
||||
@ -406,7 +429,7 @@ AcpiDbSecondPassParse (
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
break;
|
||||
}
|
||||
|
||||
Op = AcpiPsGetDepthNext (Root, Op);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbxface - AML Debugger external interfaces
|
||||
* $Revision: 41 $
|
||||
* $Revision: 43 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -383,7 +383,7 @@ AcpiDbInitialize (void)
|
||||
|
||||
/* Init globals */
|
||||
|
||||
AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE);
|
||||
AcpiGbl_DbBuffer = AcpiOsCallocate (ACPI_DEBUG_BUFFER_SIZE);
|
||||
|
||||
/* Initial scope is the root */
|
||||
|
||||
@ -419,4 +419,32 @@ AcpiDbInitialize (void)
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDbTerminate
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Stop debugger
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiDbTerminate (void)
|
||||
{
|
||||
|
||||
if (AcpiGbl_DbTablePtr)
|
||||
{
|
||||
AcpiOsFree (AcpiGbl_DbTablePtr);
|
||||
}
|
||||
if (AcpiGbl_DbBuffer)
|
||||
{
|
||||
AcpiOsFree (AcpiGbl_DbBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* ENABLE_DEBUGGER */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dsmethod - Parser/Interpreter interface - control method parsing
|
||||
* $Revision: 65 $
|
||||
* $Revision: 68 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -157,6 +157,7 @@ AcpiDsParseMethod (
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_OWNER_ID OwnerId;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("DsParseMethod", ObjHandle);
|
||||
@ -182,7 +183,7 @@ AcpiDsParseMethod (
|
||||
return_ACPI_STATUS (AE_NULL_OBJECT);
|
||||
}
|
||||
|
||||
/* Create a mutex for the method if there is a concurrency limit */
|
||||
/* Create a mutex for the method if there is a concurrency limit */
|
||||
|
||||
if ((ObjDesc->Method.Concurrency != INFINITE_CONCURRENCY) &&
|
||||
(!ObjDesc->Method.Semaphore))
|
||||
@ -211,6 +212,22 @@ AcpiDsParseMethod (
|
||||
AcpiPsSetName (Op, Node->Name);
|
||||
Op->Node = Node;
|
||||
|
||||
/* Create and initialize a new walk state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, Node, ObjDesc->Method.AmlStart,
|
||||
ObjDesc->Method.AmlLength, NULL, NULL, 1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the method, first pass
|
||||
@ -222,12 +239,7 @@ AcpiDsParseMethod (
|
||||
* method so that operands to the named objects can
|
||||
* take on dynamic run-time values.
|
||||
*/
|
||||
Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode,
|
||||
ObjDesc->Method.PcodeLength,
|
||||
ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
|
||||
Node, NULL, NULL,
|
||||
AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp);
|
||||
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -241,9 +253,6 @@ AcpiDsParseMethod (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** [%4.4s] Parsed **** NamedObj=%p Op=%p\n",
|
||||
&((ACPI_NAMESPACE_NODE *)ObjHandle)->Name, ObjHandle, Op));
|
||||
|
||||
/* Install the parsed tree in the method object */
|
||||
/* TBD: [Restructure] Obsolete field? */
|
||||
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -344,13 +353,12 @@ ACPI_STATUS
|
||||
AcpiDsCallControlMethod (
|
||||
ACPI_WALK_LIST *WalkList,
|
||||
ACPI_WALK_STATE *ThisWalkState,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
ACPI_PARSE_OBJECT *Op) /* TBD: This operand is obsolete */
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_NAMESPACE_NODE *MethodNode;
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
ACPI_WALK_STATE *NextWalkState;
|
||||
ACPI_PARSE_STATE *ParserState;
|
||||
UINT32 i;
|
||||
|
||||
|
||||
@ -374,7 +382,6 @@ AcpiDsCallControlMethod (
|
||||
return_ACPI_STATUS (AE_NULL_OBJECT);
|
||||
}
|
||||
|
||||
|
||||
/* Init for new method, wait on concurrency semaphore */
|
||||
|
||||
Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc,
|
||||
@ -384,83 +391,67 @@ AcpiDsCallControlMethod (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Create and initialize a new parser state */
|
||||
|
||||
ParserState = AcpiPsCreateState (ObjDesc->Method.Pcode,
|
||||
ObjDesc->Method.PcodeLength);
|
||||
if (!ParserState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
AcpiPsInitScope (ParserState, NULL);
|
||||
ParserState->StartNode = MethodNode;
|
||||
|
||||
|
||||
/* Create a new state for the preempting walk */
|
||||
/* 1) Parse: Create a new walk state for the preempting walk */
|
||||
|
||||
NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId,
|
||||
NULL, ObjDesc, WalkList);
|
||||
Op, ObjDesc, NULL);
|
||||
if (!NextWalkState)
|
||||
{
|
||||
/* TBD: delete parser state */
|
||||
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
NextWalkState->WalkType = WALK_METHOD;
|
||||
NextWalkState->MethodNode = MethodNode;
|
||||
NextWalkState->ParserState = ParserState;
|
||||
NextWalkState->ParseFlags = ThisWalkState->ParseFlags;
|
||||
NextWalkState->DescendingCallback = ThisWalkState->DescendingCallback;
|
||||
NextWalkState->AscendingCallback = ThisWalkState->AscendingCallback;
|
||||
|
||||
/* The NextOp of the NextWalk will be the beginning of the method */
|
||||
/* TBD: [Restructure] -- obsolete? */
|
||||
|
||||
NextWalkState->NextOp = NULL;
|
||||
|
||||
/* Open a new scope */
|
||||
|
||||
Status = AcpiDsScopeStackPush (MethodNode,
|
||||
ACPI_TYPE_METHOD, NextWalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialize the arguments for the method. The resolved
|
||||
* arguments were put on the previous walk state's operand
|
||||
* stack. Operands on the previous walk state stack always
|
||||
* start at index 0.
|
||||
*/
|
||||
Status = AcpiDsMethodDataInitArgs (&ThisWalkState->Operands[0],
|
||||
ThisWalkState->NumOperands,
|
||||
NextWalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/* Create and init a Root Node */
|
||||
|
||||
Op = AcpiPsAllocOp (AML_SCOPE_OP);
|
||||
if (!Op)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode,
|
||||
ObjDesc->Method.PcodeLength,
|
||||
ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
|
||||
MethodNode, NULL, NULL,
|
||||
AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp);
|
||||
Status = AcpiDsInitAmlWalk (NextWalkState, Op, MethodNode,
|
||||
ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength,
|
||||
NULL, NULL, 1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Begin AML parse */
|
||||
|
||||
Status = AcpiPsParseAml (NextWalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
|
||||
/* 2) Execute: Create a new state for the preempting walk */
|
||||
|
||||
NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId,
|
||||
NULL, ObjDesc, WalkList);
|
||||
if (!NextWalkState)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
* The resolved arguments were put on the previous walk state's operand
|
||||
* stack. Operands on the previous walk state stack always
|
||||
* start at index 0.
|
||||
* Null terminate the list of arguments
|
||||
*/
|
||||
ThisWalkState->Operands [ThisWalkState->NumOperands] = NULL;
|
||||
|
||||
Status = AcpiDsInitAmlWalk (NextWalkState, NULL, MethodNode,
|
||||
ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength,
|
||||
&ThisWalkState->Operands[0], NULL, 3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete the operands on the previous walkstate operand stack
|
||||
* (they were copied to new objects)
|
||||
@ -475,7 +466,6 @@ AcpiDsCallControlMethod (
|
||||
|
||||
ThisWalkState->NumOperands = 0;
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Starting nested execution, newstate=%p\n",
|
||||
NextWalkState));
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dsobject - Dispatcher object management routines
|
||||
* $Revision: 74 $
|
||||
* $Revision: 76 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -214,16 +214,15 @@ AcpiDsInitOneObject (
|
||||
* Always parse methods to detect errors, we may delete
|
||||
* the parse tree below
|
||||
*/
|
||||
|
||||
Status = AcpiDsParseMethod (ObjHandle);
|
||||
|
||||
/* TBD: [Errors] what do we do with an error? */
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] parse failed! %s\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] - parse failure, %s\n",
|
||||
ObjHandle, &((ACPI_NAMESPACE_NODE *)ObjHandle)->Name,
|
||||
AcpiFormatException (Status)));
|
||||
|
||||
/* This parse failed, but we will continue parsing more methods */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -448,6 +447,12 @@ AcpiDsInitObjectFromOp (
|
||||
case ACPI_TYPE_STRING:
|
||||
ObjDesc->String.Pointer = Op->Value.String;
|
||||
ObjDesc->String.Length = STRLEN (Op->Value.String);
|
||||
|
||||
/*
|
||||
* The string is contained in the ACPI table, don't ever try
|
||||
* to delete it
|
||||
*/
|
||||
ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER;
|
||||
break;
|
||||
|
||||
|
||||
@ -477,60 +482,6 @@ AcpiDsInitObjectFromOp (
|
||||
break;
|
||||
|
||||
|
||||
#ifdef INTEGER_CONST__
|
||||
case OPTYPE_CONSTANT:
|
||||
|
||||
/* TBD: Why is the DEBUG object a CONSTANT? */
|
||||
|
||||
if (Op->Opcode == AML_DEBUG_OP)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* Reference object no longer needed */
|
||||
|
||||
AcpiUtRemoveReference (ObjDesc);
|
||||
|
||||
/* Create/Init a new Integer object */
|
||||
|
||||
ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/*
|
||||
* Decode constants here. Turn them into real integer objects
|
||||
* that are initialized to the value of the constant.
|
||||
*/
|
||||
switch (Op->Opcode)
|
||||
{
|
||||
case AML_ONE_OP:
|
||||
ObjDesc->Integer.Value = 1;
|
||||
break;
|
||||
|
||||
case AML_ONES_OP:
|
||||
ObjDesc->Integer.Value = ACPI_INTEGER_MAX;
|
||||
break;
|
||||
|
||||
case AML_REVISION_OP:
|
||||
ObjDesc->Integer.Value = ACPI_CA_VERSION;
|
||||
break;
|
||||
|
||||
case AML_ZERO_OP:
|
||||
ObjDesc->Integer.Flags |= AOPOBJ_ZERO_CONST;
|
||||
ObjDesc->Integer.Value = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
ObjDesc->Integer.Value = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
*RetObjDesc = ObjDesc;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default: /* Constants, Literals, etc.. */
|
||||
|
||||
if (Op->Opcode == AML_INT_NAMEPATH_OP)
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dsopcode - Dispatcher Op Region support and handling of
|
||||
* "control" opcodes
|
||||
* $Revision: 51 $
|
||||
* $Revision: 55 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -153,6 +153,7 @@ AcpiDsGetBufferFieldArguments (
|
||||
ACPI_PARSE_OBJECT *FieldOp;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_DESC *TableDesc;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("DsGetBufferFieldArguments", ObjDesc);
|
||||
@ -196,18 +197,37 @@ AcpiDsGetBufferFieldArguments (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Create and initialize a new parser state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, ExtraDesc->Extra.AmlStart,
|
||||
ExtraDesc->Extra.AmlLength, NULL, NULL, 1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* TBD: No Walk flags?? */
|
||||
|
||||
WalkState->ParseFlags = 0;
|
||||
|
||||
/* Pass1: Parse the entire BufferField declaration */
|
||||
|
||||
Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode,
|
||||
ExtraDesc->Extra.PcodeLength, 0,
|
||||
NULL, NULL, NULL, AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp);
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Get and init the actual FielUnitOp created above */
|
||||
/* Get and init the actual FieldUnit Op created above */
|
||||
|
||||
FieldOp = Op->Value.Arg;
|
||||
Op->Node = Node;
|
||||
@ -217,7 +237,7 @@ AcpiDsGetBufferFieldArguments (
|
||||
FieldOp->Node = Node;
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
/* AcpiEvaluate the address and length arguments for the OpRegion */
|
||||
/* Evaluate the address and length arguments for the OpRegion */
|
||||
|
||||
Op = AcpiPsAllocOp (AML_SCOPE_OP);
|
||||
if (!Op)
|
||||
@ -227,16 +247,26 @@ AcpiDsGetBufferFieldArguments (
|
||||
|
||||
Op->Node = AcpiNsGetParentObject (Node);
|
||||
|
||||
Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode,
|
||||
ExtraDesc->Extra.PcodeLength,
|
||||
ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE,
|
||||
NULL /*MethodDesc*/, NULL, NULL,
|
||||
AcpiDsExecBeginOp, AcpiDsExecEndOp);
|
||||
/* All done with the parse tree, delete it */
|
||||
/* Create and initialize a new parser state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, ExtraDesc->Extra.AmlStart,
|
||||
ExtraDesc->Extra.AmlLength, NULL, NULL, 3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
|
||||
/*
|
||||
* The pseudo-method object is no longer needed since the region is
|
||||
* now initialized
|
||||
@ -271,6 +301,7 @@ AcpiDsGetRegionArguments (
|
||||
ACPI_PARSE_OBJECT *RegionOp;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_TABLE_DESC *TableDesc;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("DsGetRegionArguments", ObjDesc);
|
||||
@ -290,8 +321,8 @@ AcpiDsGetRegionArguments (
|
||||
DEBUG_EXEC(AcpiUtDisplayInitPathname (Node, " [Operation Region]"));
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Init at AML %p[%x]\n",
|
||||
&Node->Name, ExtraDesc->Extra.Pcode,
|
||||
*(UINT32*) ExtraDesc->Extra.Pcode));
|
||||
&Node->Name, ExtraDesc->Extra.AmlStart,
|
||||
*(UINT32*) ExtraDesc->Extra.AmlStart));
|
||||
|
||||
/*
|
||||
* Allocate a new parser op to be the root of the parsed
|
||||
@ -315,11 +346,30 @@ AcpiDsGetRegionArguments (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Create and initialize a new parser state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
Op, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, ExtraDesc->Extra.AmlStart,
|
||||
ExtraDesc->Extra.AmlLength, NULL, NULL, 1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* TBD: No Walk flags?? */
|
||||
|
||||
WalkState->ParseFlags = 0;
|
||||
|
||||
/* Parse the entire OpRegion declaration, creating a parse tree */
|
||||
|
||||
Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode,
|
||||
ExtraDesc->Extra.PcodeLength, 0,
|
||||
NULL, NULL, NULL, AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp);
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
@ -346,14 +396,24 @@ AcpiDsGetRegionArguments (
|
||||
|
||||
Op->Node = AcpiNsGetParentObject (Node);
|
||||
|
||||
Status = AcpiPsParseAml (Op, ExtraDesc->Extra.Pcode,
|
||||
ExtraDesc->Extra.PcodeLength,
|
||||
ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE,
|
||||
NULL /*MethodDesc*/, NULL, NULL,
|
||||
AcpiDsExecBeginOp, AcpiDsExecEndOp);
|
||||
/* Create and initialize a new parser state */
|
||||
|
||||
/* All done with the parse tree, delete it */
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
Op, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, ExtraDesc->Extra.AmlStart,
|
||||
ExtraDesc->Extra.AmlLength, NULL, NULL, 3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -431,13 +491,10 @@ AcpiDsEvalBufferFieldOperands (
|
||||
UINT32 BitOffset;
|
||||
UINT32 BitCount;
|
||||
UINT8 FieldFlags;
|
||||
|
||||
|
||||
ACPI_OPERAND_OBJECT *ResDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *CntDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *OffDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *SrcDesc = NULL;
|
||||
UINT32 NumOperands = 3;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("DsEvalBufferFieldOperands", Op);
|
||||
@ -447,7 +504,6 @@ AcpiDsEvalBufferFieldOperands (
|
||||
* This is where we evaluate the address and length fields of the
|
||||
* CreateXxxField declaration
|
||||
*/
|
||||
|
||||
Node = Op->Node;
|
||||
|
||||
/* NextOp points to the op that holds the Buffer */
|
||||
@ -473,31 +529,32 @@ AcpiDsEvalBufferFieldOperands (
|
||||
|
||||
Status = AcpiExResolveOperands (Op->Opcode, WALK_OPERANDS, WalkState);
|
||||
DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Opcode),
|
||||
NumOperands, "after AcpiExResolveOperands");
|
||||
|
||||
|
||||
/* Get the operands */
|
||||
|
||||
Status |= AcpiDsObjStackPopObject (&ResDesc, WalkState);
|
||||
if (AML_CREATE_FIELD_OP == Op->Opcode)
|
||||
{
|
||||
NumOperands = 4;
|
||||
Status |= AcpiDsObjStackPopObject (&CntDesc, WalkState);
|
||||
}
|
||||
|
||||
Status |= AcpiDsObjStackPopObject (&OffDesc, WalkState);
|
||||
Status |= AcpiDsObjStackPopObject (&SrcDesc, WalkState);
|
||||
WalkState->NumOperands, "after AcpiExResolveOperands");
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* Invalid parameters on object stack */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(%s) bad operand(s) (%X)\n",
|
||||
AcpiPsGetOpcodeName (Op->Opcode), Status));
|
||||
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Get the operands */
|
||||
|
||||
if (AML_CREATE_FIELD_OP == Op->Opcode)
|
||||
{
|
||||
ResDesc = WalkState->Operands[3];
|
||||
CntDesc = WalkState->Operands[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
ResDesc = WalkState->Operands[2];
|
||||
}
|
||||
|
||||
OffDesc = WalkState->Operands[1];
|
||||
SrcDesc = WalkState->Operands[0];
|
||||
|
||||
|
||||
|
||||
Offset = (UINT32) OffDesc->Integer.Value;
|
||||
|
||||
@ -858,7 +915,7 @@ AcpiDsExecBeginControlOp (
|
||||
* of a loop
|
||||
*/
|
||||
WalkState->ControlState->Control.AmlPredicateStart =
|
||||
WalkState->ParserState->Aml - 1;
|
||||
WalkState->ParserState.Aml - 1;
|
||||
/* TBD: can this be removed? */
|
||||
/*AcpiPsPkgLengthEncodingSize (GET8 (WalkState->ParserState->Aml));*/
|
||||
break;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dsutils - Dispatcher utilities
|
||||
* $Revision: 72 $
|
||||
* $Revision: 73 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -916,6 +916,7 @@ AcpiDsMapNamedOpcodeToDataType (
|
||||
DataType = ACPI_TYPE_EVENT;
|
||||
break;
|
||||
|
||||
case AML_DATA_REGION_OP:
|
||||
case AML_REGION_OP:
|
||||
DataType = ACPI_TYPE_REGION;
|
||||
break;
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dswexec - Dispatcher method execution callbacks;
|
||||
* dispatch to interpreter.
|
||||
* $Revision: 70 $
|
||||
* $Revision: 71 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -145,7 +145,6 @@
|
||||
ACPI_STATUS
|
||||
AcpiDsGetPredicateValue (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
UINT32 HasResultObj)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
@ -172,7 +171,7 @@ AcpiDsGetPredicateValue (
|
||||
|
||||
else
|
||||
{
|
||||
Status = AcpiDsCreateOperand (WalkState, Op, 0);
|
||||
Status = AcpiDsCreateOperand (WalkState, WalkState->Op, 0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -238,7 +237,7 @@ AcpiDsGetPredicateValue (
|
||||
Cleanup:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%X\n",
|
||||
WalkState->ControlState->Common.Value, Op));
|
||||
WalkState->ControlState->Common.Value, WalkState->Op));
|
||||
|
||||
/* Break to debugger to display result */
|
||||
|
||||
@ -260,8 +259,7 @@ AcpiDsGetPredicateValue (
|
||||
* FUNCTION: AcpiDsExecBeginOp
|
||||
*
|
||||
* PARAMETERS: WalkState - Current state of the parse tree walk
|
||||
* Op - Op that has been just been reached in the
|
||||
* walk; Arguments have not been evaluated yet.
|
||||
* OutOp - Return op if a new one is created
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -273,28 +271,30 @@ AcpiDsGetPredicateValue (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsExecBeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp)
|
||||
{
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT8 OpcodeClass;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("DsExecBeginOp", Op);
|
||||
FUNCTION_TRACE_PTR ("DsExecBeginOp", WalkState);
|
||||
|
||||
|
||||
Op = WalkState->Op;
|
||||
if (!Op)
|
||||
{
|
||||
Status = AcpiDsLoad2BeginOp (Opcode, NULL, WalkState, OutOp);
|
||||
Status = AcpiDsLoad2BeginOp (WalkState, OutOp);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Op = *OutOp;
|
||||
WalkState->Op = Op;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
WalkState->Opcode = Op->Opcode;
|
||||
}
|
||||
|
||||
if (Op == WalkState->Origin)
|
||||
@ -327,8 +327,7 @@ AcpiDsExecBeginOp (
|
||||
}
|
||||
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
OpcodeClass = (UINT8) ACPI_GET_OP_CLASS (OpInfo);
|
||||
OpcodeClass = (UINT8) ACPI_GET_OP_CLASS (WalkState->OpInfo);
|
||||
|
||||
/* We want to send namepaths to the load code */
|
||||
|
||||
@ -365,7 +364,7 @@ AcpiDsExecBeginOp (
|
||||
* will be deleted upon completion of the execution
|
||||
* of this method.
|
||||
*/
|
||||
Status = AcpiDsLoad2BeginOp (Op->Opcode, Op, WalkState, NULL);
|
||||
Status = AcpiDsLoad2BeginOp (WalkState, NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -426,41 +425,36 @@ AcpiDsExecBeginOp (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsExecEndOp (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT16 Opcode;
|
||||
UINT8 Optype;
|
||||
ACPI_PARSE_OBJECT *NextOp;
|
||||
ACPI_PARSE_OBJECT *FirstArg;
|
||||
ACPI_OPERAND_OBJECT *ResultObj = NULL;
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
UINT32 i;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("DsExecEndOp", Op);
|
||||
FUNCTION_TRACE_PTR ("DsExecEndOp", WalkState);
|
||||
|
||||
|
||||
Opcode = (UINT16) Op->Opcode;
|
||||
Op = WalkState->Op;
|
||||
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
if (ACPI_GET_OP_TYPE (OpInfo) != ACPI_OP_TYPE_OPCODE)
|
||||
if (ACPI_GET_OP_TYPE (WalkState->OpInfo) != ACPI_OP_TYPE_OPCODE)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown opcode %X\n", Op->Opcode));
|
||||
return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
|
||||
}
|
||||
|
||||
Optype = (UINT8) ACPI_GET_OP_CLASS (OpInfo);
|
||||
Optype = (UINT8) ACPI_GET_OP_CLASS (WalkState->OpInfo);
|
||||
FirstArg = Op->Value.Arg;
|
||||
|
||||
/* Init the walk state */
|
||||
|
||||
WalkState->NumOperands = 0;
|
||||
WalkState->ReturnDesc = NULL;
|
||||
WalkState->OpInfo = OpInfo;
|
||||
WalkState->Opcode = Opcode;
|
||||
WalkState->ResultObj = NULL;
|
||||
|
||||
|
||||
/* Call debugger for single step support (DEBUG build only) */
|
||||
@ -482,7 +476,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
case OPTYPE_BOGUS:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Internal opcode=%X type Op=%X\n",
|
||||
Opcode, Op));
|
||||
WalkState->Opcode, Op));
|
||||
break;
|
||||
|
||||
case OPTYPE_CONSTANT: /* argument type only */
|
||||
@ -526,7 +520,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* Resolve all operands */
|
||||
|
||||
Status = AcpiExResolveOperands (Opcode,
|
||||
Status = AcpiExResolveOperands (WalkState->Opcode,
|
||||
&(WalkState->Operands [WalkState->NumOperands -1]),
|
||||
WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -534,7 +528,7 @@ AcpiDsExecEndOp (
|
||||
/* TBD: must pop and delete operands */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "[%s]: Could not resolve operands, %s\n",
|
||||
AcpiPsGetOpcodeName (Opcode), AcpiFormatException (Status)));
|
||||
AcpiPsGetOpcodeName (WalkState->Opcode), AcpiFormatException (Status)));
|
||||
|
||||
/*
|
||||
* On error, we must delete all the operands and clear the
|
||||
@ -547,11 +541,10 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
|
||||
WalkState->NumOperands = 0;
|
||||
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (Opcode),
|
||||
DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, AcpiPsGetOpcodeName (WalkState->Opcode),
|
||||
WalkState->NumOperands, "after ExResolveOperands");
|
||||
|
||||
switch (Optype)
|
||||
@ -560,7 +553,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 1 Operand, 0 ExternalResult, 0 InternalResult */
|
||||
|
||||
Status = AcpiExMonadic1 (Opcode, WalkState);
|
||||
Status = AcpiExMonadic1 (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -568,7 +561,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 1 Operand, 0 ExternalResult, 1 InternalResult */
|
||||
|
||||
Status = AcpiExMonadic2 (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExMonadic2 (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -576,7 +569,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 1 Operand, 1 ExternalResult, 1 InternalResult */
|
||||
|
||||
Status = AcpiExMonadic2R (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExMonadic2R (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -584,7 +577,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 2 Operands, 0 ExternalResult, 0 InternalResult */
|
||||
|
||||
Status = AcpiExDyadic1 (Opcode, WalkState);
|
||||
Status = AcpiExDyadic1 (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -592,7 +585,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 2 Operands, 0 ExternalResult, 1 InternalResult */
|
||||
|
||||
Status = AcpiExDyadic2 (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExDyadic2 (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -600,7 +593,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 2 Operands, 1 or 2 ExternalResults, 1 InternalResult */
|
||||
|
||||
Status = AcpiExDyadic2R (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExDyadic2R (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -608,15 +601,15 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 2 Operands, 0 ExternalResult, 1 InternalResult */
|
||||
|
||||
Status = AcpiExDyadic2S (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExDyadic2S (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case OPTYPE_TRIADIC: /* Opcode with 3 operands */
|
||||
case OPTYPE_TRIADIC: /* WalkState->Opcode with 3 operands */
|
||||
|
||||
/* 3 Operands, 1 ExternalResult, 1 InternalResult */
|
||||
|
||||
Status = AcpiExTriadic (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExTriadic (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -628,7 +621,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 6 Operands, 0 ExternalResult, 1 InternalResult */
|
||||
|
||||
Status = AcpiExHexadic (Opcode, WalkState, &ResultObj);
|
||||
Status = AcpiExHexadic (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -636,7 +629,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
/* 1 or 2 operands, 0 Internal Result */
|
||||
|
||||
Status = AcpiExReconfiguration (Opcode, WalkState);
|
||||
Status = AcpiExReconfiguration (WalkState);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -653,9 +646,9 @@ AcpiDsExecEndOp (
|
||||
* current result stack
|
||||
*/
|
||||
if (ACPI_SUCCESS (Status) &&
|
||||
ResultObj)
|
||||
WalkState->ResultObj)
|
||||
{
|
||||
Status = AcpiDsResultPush (ResultObj, WalkState);
|
||||
Status = AcpiDsResultPush (WalkState->ResultObj, WalkState);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -727,7 +720,7 @@ AcpiDsExecEndOp (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"Executing CreateField Buffer/Index Op=%X\n", Op));
|
||||
|
||||
Status = AcpiDsLoad2EndOp (WalkState, Op);
|
||||
Status = AcpiDsLoad2EndOp (WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
break;
|
||||
@ -739,7 +732,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
case OPTYPE_NAMED_OBJECT:
|
||||
|
||||
Status = AcpiDsLoad2EndOp (WalkState, Op);
|
||||
Status = AcpiDsLoad2EndOp (WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
break;
|
||||
@ -797,7 +790,7 @@ AcpiDsExecEndOp (
|
||||
* ACPI 2.0 support for 64-bit integers:
|
||||
* Truncate numeric result value if we are executing from a 32-bit ACPI table
|
||||
*/
|
||||
AcpiExTruncateFor32bitTable (ResultObj, WalkState);
|
||||
AcpiExTruncateFor32bitTable (WalkState->ResultObj, WalkState);
|
||||
|
||||
/*
|
||||
* Check if we just completed the evaluation of a
|
||||
@ -809,24 +802,24 @@ AcpiDsExecEndOp (
|
||||
CONTROL_PREDICATE_EXECUTING) &&
|
||||
(WalkState->ControlState->Control.PredicateOp == Op))
|
||||
{
|
||||
Status = AcpiDsGetPredicateValue (WalkState, Op, (UINT32) ResultObj);
|
||||
ResultObj = NULL;
|
||||
Status = AcpiDsGetPredicateValue (WalkState, (UINT32) WalkState->ResultObj);
|
||||
WalkState->ResultObj = NULL;
|
||||
}
|
||||
|
||||
|
||||
Cleanup:
|
||||
if (ResultObj)
|
||||
if (WalkState->ResultObj)
|
||||
{
|
||||
/* Break to debugger to display result */
|
||||
|
||||
DEBUGGER_EXEC (AcpiDbDisplayResultObject (ResultObj, WalkState));
|
||||
DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, WalkState));
|
||||
|
||||
/*
|
||||
* Delete the result op if and only if:
|
||||
* Parent will not use the result -- such as any
|
||||
* non-nested type2 op in a method (parent will be method)
|
||||
*/
|
||||
AcpiDsDeleteResultIfNotUsed (Op, ResultObj, WalkState);
|
||||
AcpiDsDeleteResultIfNotUsed (Op, WalkState->ResultObj, WalkState);
|
||||
}
|
||||
|
||||
/* Always clear the object stack */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswload - Dispatcher namespace load callbacks
|
||||
* $Revision: 44 $
|
||||
* $Revision: 48 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -129,6 +129,42 @@
|
||||
MODULE_NAME ("dswload")
|
||||
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsInitCallbacks (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
UINT32 PassNumber)
|
||||
{
|
||||
|
||||
switch (PassNumber)
|
||||
{
|
||||
case 1:
|
||||
WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE;
|
||||
WalkState->DescendingCallback = AcpiDsLoad1BeginOp;
|
||||
WalkState->AscendingCallback = AcpiDsLoad1EndOp;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE;
|
||||
WalkState->DescendingCallback = AcpiDsLoad2BeginOp;
|
||||
WalkState->AscendingCallback = AcpiDsLoad2EndOp;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
WalkState->ParseFlags |= ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE;
|
||||
WalkState->DescendingCallback = AcpiDsExecBeginOp;
|
||||
WalkState->AscendingCallback = AcpiDsExecEndOp;
|
||||
break;
|
||||
|
||||
default:
|
||||
return (AE_BAD_PARAMETER);
|
||||
break;
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsLoad1BeginOp
|
||||
@ -145,51 +181,53 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad1BeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp)
|
||||
{
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_OBJECT_TYPE8 DataType;
|
||||
NATIVE_CHAR *Path;
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
|
||||
|
||||
PROC_NAME ("DsLoad1BeginOp");
|
||||
|
||||
Op = WalkState->Op;
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
|
||||
|
||||
|
||||
/* We are only interested in opcodes that have an associated name */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Opcode);
|
||||
if (!(OpInfo->Flags & AML_NAMED))
|
||||
if (WalkState->Op)
|
||||
{
|
||||
*OutOp = Op;
|
||||
return (AE_OK);
|
||||
if (!(WalkState->OpInfo->Flags & AML_NAMED))
|
||||
{
|
||||
*OutOp = Op;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Check if this object has already been installed in the namespace */
|
||||
|
||||
if (Op->Node)
|
||||
{
|
||||
*OutOp = Op;
|
||||
return (AE_OK);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if this object has already been installed in the namespace */
|
||||
|
||||
if (Op && Op->Node)
|
||||
{
|
||||
*OutOp = Op;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
Path = AcpiPsGetNextNamestring (WalkState->ParserState);
|
||||
Path = AcpiPsGetNextNamestring (&WalkState->ParserState);
|
||||
|
||||
/* Map the raw opcode into an internal object type */
|
||||
|
||||
DataType = AcpiDsMapNamedOpcodeToDataType (Opcode);
|
||||
DataType = AcpiDsMapNamedOpcodeToDataType (WalkState->Opcode);
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
"State=%p Op=%p Type=%x\n", WalkState, Op, DataType));
|
||||
|
||||
|
||||
if (Opcode == AML_SCOPE_OP)
|
||||
if (WalkState->Opcode == AML_SCOPE_OP)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
"State=%p Op=%p Type=%x\n", WalkState, Op, DataType));
|
||||
@ -212,7 +250,7 @@ AcpiDsLoad1BeginOp (
|
||||
{
|
||||
/* Create a new op */
|
||||
|
||||
Op = AcpiPsAllocOp (Opcode);
|
||||
Op = AcpiPsAllocOp (WalkState->Opcode);
|
||||
if (!Op)
|
||||
{
|
||||
return (AE_NO_MEMORY);
|
||||
@ -228,7 +266,7 @@ AcpiDsLoad1BeginOp (
|
||||
* can get it again quickly when this scope is closed
|
||||
*/
|
||||
Op->Node = Node;
|
||||
AcpiPsAppendArg (AcpiPsGetParentScope (WalkState->ParserState), Op);
|
||||
AcpiPsAppendArg (AcpiPsGetParentScope (&WalkState->ParserState), Op);
|
||||
|
||||
*OutOp = Op;
|
||||
return (Status);
|
||||
@ -252,21 +290,21 @@ AcpiDsLoad1BeginOp (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad1EndOp (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_OBJECT_TYPE8 DataType;
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
|
||||
|
||||
PROC_NAME ("DsLoad1EndOp");
|
||||
|
||||
Op = WalkState->Op;
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
|
||||
|
||||
|
||||
/* We are only interested in opcodes that have an associated name */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
if (!(OpInfo->Flags & AML_NAMED))
|
||||
if (!(WalkState->OpInfo->Flags & AML_NAMED))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -318,45 +356,44 @@ AcpiDsLoad1EndOp (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad2BeginOp (
|
||||
UINT16 Opcode,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT **OutOp)
|
||||
{
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_OBJECT_TYPE8 DataType;
|
||||
NATIVE_CHAR *BufferPtr;
|
||||
void *Original = NULL;
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
|
||||
|
||||
PROC_NAME ("DsLoad2BeginOp");
|
||||
|
||||
Op = WalkState->Op;
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
|
||||
|
||||
|
||||
/* We only care about Namespace opcodes here */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Opcode);
|
||||
if (!(OpInfo->Flags & AML_NSOPCODE) &&
|
||||
Opcode != AML_INT_NAMEPATH_OP)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* TBD: [Restructure] Temp! same code as in psparse */
|
||||
|
||||
if (!(OpInfo->Flags & AML_NAMED))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
if (Op)
|
||||
{
|
||||
/* We only care about Namespace opcodes here */
|
||||
|
||||
if (!(WalkState->OpInfo->Flags & AML_NSOPCODE) &&
|
||||
WalkState->Opcode != AML_INT_NAMEPATH_OP)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* TBD: [Restructure] Temp! same code as in psparse */
|
||||
|
||||
if (!(WalkState->OpInfo->Flags & AML_NAMED))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the name we are going to enter or lookup in the namespace
|
||||
*/
|
||||
if (Opcode == AML_INT_NAMEPATH_OP)
|
||||
if (WalkState->Opcode == AML_INT_NAMEPATH_OP)
|
||||
{
|
||||
/* For Namepath op, get the path string */
|
||||
|
||||
@ -379,27 +416,27 @@ AcpiDsLoad2BeginOp (
|
||||
|
||||
else
|
||||
{
|
||||
BufferPtr = AcpiPsGetNextNamestring (WalkState->ParserState);
|
||||
BufferPtr = AcpiPsGetNextNamestring (&WalkState->ParserState);
|
||||
}
|
||||
|
||||
|
||||
/* Map the raw opcode into an internal object type */
|
||||
|
||||
DataType = AcpiDsMapNamedOpcodeToDataType (Opcode);
|
||||
DataType = AcpiDsMapNamedOpcodeToDataType (WalkState->Opcode);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
"State=%p Op=%p Type=%x\n", WalkState, Op, DataType));
|
||||
|
||||
|
||||
if (Opcode == AML_FIELD_OP ||
|
||||
Opcode == AML_BANK_FIELD_OP ||
|
||||
Opcode == AML_INDEX_FIELD_OP)
|
||||
if (WalkState->Opcode == AML_FIELD_OP ||
|
||||
WalkState->Opcode == AML_BANK_FIELD_OP ||
|
||||
WalkState->Opcode == AML_INDEX_FIELD_OP)
|
||||
{
|
||||
Node = NULL;
|
||||
Status = AE_OK;
|
||||
}
|
||||
|
||||
else if (Opcode == AML_INT_NAMEPATH_OP)
|
||||
else if (WalkState->Opcode == AML_INT_NAMEPATH_OP)
|
||||
{
|
||||
/*
|
||||
* The NamePath is an object reference to an existing object. Don't enter the
|
||||
@ -443,7 +480,7 @@ AcpiDsLoad2BeginOp (
|
||||
{
|
||||
/* Create a new op */
|
||||
|
||||
Op = AcpiPsAllocOp (Opcode);
|
||||
Op = AcpiPsAllocOp (WalkState->Opcode);
|
||||
if (!Op)
|
||||
{
|
||||
return (AE_NO_MEMORY);
|
||||
@ -494,25 +531,25 @@ AcpiDsLoad2BeginOp (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsLoad2EndOp (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_OBJECT_TYPE8 DataType;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_PARSE_OBJECT *Arg;
|
||||
ACPI_NAMESPACE_NODE *NewNode;
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
|
||||
|
||||
PROC_NAME ("DsLoad2EndOp");
|
||||
|
||||
Op = WalkState->Op;
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
|
||||
|
||||
|
||||
/* Only interested in opcodes that have namespace objects */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
if (!(OpInfo->Flags & AML_NSOBJECT))
|
||||
if (!(WalkState->OpInfo->Flags & AML_NSOBJECT))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
@ -559,28 +596,29 @@ AcpiDsLoad2EndOp (
|
||||
/*
|
||||
* Named operations are as follows:
|
||||
*
|
||||
* AML_SCOPE
|
||||
* AML_DEVICE
|
||||
* AML_THERMALZONE
|
||||
* AML_METHOD
|
||||
* AML_POWERRES
|
||||
* AML_PROCESSOR
|
||||
* AML_FIELD
|
||||
* AML_INDEXFIELD
|
||||
* AML_BANKFIELD
|
||||
* AML_NAMEDFIELD
|
||||
* AML_NAME
|
||||
* AML_ALIAS
|
||||
* AML_MUTEX
|
||||
* AML_EVENT
|
||||
* AML_OPREGION
|
||||
* AML_CREATEFIELD
|
||||
* AML_BANKFIELD
|
||||
* AML_CREATEBITFIELD
|
||||
* AML_CREATEBYTEFIELD
|
||||
* AML_CREATEWORDFIELD
|
||||
* AML_CREATEDWORDFIELD
|
||||
* AML_CREATEFIELD
|
||||
* AML_CREATEQWORDFIELD
|
||||
* AML_CREATEWORDFIELD
|
||||
* AML_DATA_REGION
|
||||
* AML_DEVICE
|
||||
* AML_EVENT
|
||||
* AML_FIELD
|
||||
* AML_INDEXFIELD
|
||||
* AML_METHOD
|
||||
* AML_METHODCALL
|
||||
* AML_MUTEX
|
||||
* AML_NAME
|
||||
* AML_NAMEDFIELD
|
||||
* AML_OPREGION
|
||||
* AML_POWERRES
|
||||
* AML_PROCESSOR
|
||||
* AML_SCOPE
|
||||
* AML_THERMALZONE
|
||||
*/
|
||||
|
||||
|
||||
@ -834,7 +872,7 @@ AcpiDsLoad2EndOp (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
"LOADING-Opregion: Op=%p State=%p NamedObj=%p\n",
|
||||
"LOADING-OpRegion: Op=%p State=%p NamedObj=%p\n",
|
||||
Op, WalkState, Node));
|
||||
|
||||
/*
|
||||
@ -851,6 +889,22 @@ AcpiDsLoad2EndOp (
|
||||
break;
|
||||
|
||||
|
||||
case AML_DATA_REGION_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
"LOADING-DataRegion: Op=%p State=%p NamedObj=%p\n",
|
||||
Op, WalkState, Node));
|
||||
|
||||
Status = AcpiDsCreateOperands (WalkState, Arg);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
Status = AcpiExCreateTableRegion (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
/* Namespace Modifier Opcodes */
|
||||
|
||||
case AML_ALIAS_OP:
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswscope - Scope stack manipulation
|
||||
* $Revision: 48 $
|
||||
* $Revision: 49 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -212,8 +212,9 @@ AcpiDsScopeStackPush (
|
||||
|
||||
/* Init new scope object */
|
||||
|
||||
ScopeInfo->Scope.Node = Node;
|
||||
ScopeInfo->Common.Value = (UINT16) Type;
|
||||
ScopeInfo->Common.DataType = ACPI_DESC_TYPE_STATE_WSCOPE;
|
||||
ScopeInfo->Scope.Node = Node;
|
||||
ScopeInfo->Common.Value = (UINT16) Type;
|
||||
|
||||
/* Push new scope object onto stack */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswstate - Dispatcher parse tree walk management routines
|
||||
* $Revision: 50 $
|
||||
* $Revision: 54 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -479,6 +479,7 @@ AcpiDsResultStackPush (
|
||||
return (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
State->Common.DataType = ACPI_DESC_TYPE_STATE_RESULT;
|
||||
AcpiUtPushGenericState (&WalkState->Results, State);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Results=%p State=%p\n",
|
||||
@ -613,6 +614,7 @@ AcpiDsObjStackPush (
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsObjStackPopObject
|
||||
@ -672,7 +674,7 @@ AcpiDsObjStackPopObject (
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -868,7 +870,7 @@ AcpiDsGetCurrentWalkState (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
void
|
||||
AcpiDsPushWalkState (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_WALK_LIST *WalkList)
|
||||
@ -982,12 +984,111 @@ AcpiDsCreateWalkState (
|
||||
|
||||
/* Put the new state at the head of the walk list */
|
||||
|
||||
AcpiDsPushWalkState (WalkState, WalkList);
|
||||
if (WalkList)
|
||||
{
|
||||
AcpiDsPushWalkState (WalkState, WalkList);
|
||||
}
|
||||
|
||||
return_PTR (WalkState);
|
||||
}
|
||||
|
||||
|
||||
#ifndef _ACPI_ASL_COMPILER
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsInitAmlWalk
|
||||
*
|
||||
* PARAMETERS: WalkState - New state to be initialized
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Initialize a walk state for a pass 1 or 2 parse tree walk
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiDsInitAmlWalk (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ACPI_NAMESPACE_NODE *MethodNode,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
ACPI_OPERAND_OBJECT **Params,
|
||||
ACPI_OPERAND_OBJECT **ReturnObjDesc,
|
||||
UINT32 PassNumber)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_PARSE_STATE *ParserState = &WalkState->ParserState;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("DsInitAmlWalk");
|
||||
|
||||
|
||||
WalkState->ParserState.Aml =
|
||||
WalkState->ParserState.AmlStart = AmlStart;
|
||||
WalkState->ParserState.AmlEnd =
|
||||
WalkState->ParserState.PkgEnd = AmlStart + AmlLength;
|
||||
|
||||
/* The NextOp of the NextWalk will be the beginning of the method */
|
||||
/* TBD: [Restructure] -- obsolete? */
|
||||
|
||||
WalkState->NextOp = NULL;
|
||||
WalkState->Params = Params;
|
||||
WalkState->CallerReturnDesc = ReturnObjDesc;
|
||||
|
||||
Status = AcpiPsInitScope (&WalkState->ParserState, Op);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (MethodNode)
|
||||
{
|
||||
WalkState->ParserState.StartNode = MethodNode;
|
||||
WalkState->WalkType = WALK_METHOD;
|
||||
WalkState->MethodNode = MethodNode;
|
||||
WalkState->MethodDesc = AcpiNsGetAttachedObject (MethodNode);
|
||||
|
||||
|
||||
/* Push start scope on scope stack and make it current */
|
||||
|
||||
Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Init the method arguments */
|
||||
|
||||
AcpiDsMethodDataInitArgs (Params, MTH_NUM_ARGS, WalkState);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
/* Setup the current scope */
|
||||
|
||||
ParserState->StartNode = ParserState->StartOp->Node;
|
||||
if (ParserState->StartNode)
|
||||
{
|
||||
/* Push start scope on scope stack and make it current */
|
||||
|
||||
Status = AcpiDsScopeStackPush (ParserState->StartNode,
|
||||
ParserState->StartNode->Type, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AcpiDsInitCallbacks (WalkState, PassNumber);
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsDeleteWalkState
|
||||
@ -1022,7 +1123,12 @@ AcpiDsDeleteWalkState (
|
||||
}
|
||||
|
||||
|
||||
/* Always must free any linked control states */
|
||||
if (WalkState->ParserState.Scope)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p walk still has a scope list\n", WalkState));
|
||||
}
|
||||
|
||||
/* Always must free any linked control states */
|
||||
|
||||
while (WalkState->ControlState)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: evmisc - ACPI device notification handler dispatch
|
||||
* and ACPI Global Lock support
|
||||
* $Revision: 33 $
|
||||
* $Revision: 34 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -234,6 +234,7 @@ AcpiEvQueueNotifyRequest (
|
||||
return (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
NotifyInfo->Common.DataType = ACPI_DESC_TYPE_STATE_NOTIFY;
|
||||
NotifyInfo->Notify.Node = Node;
|
||||
NotifyInfo->Notify.Value = (UINT16) NotifyValue;
|
||||
NotifyInfo->Notify.HandlerObj = HandlerObj;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch
|
||||
* $Revision: 109 $
|
||||
* $Revision: 110 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -217,8 +217,6 @@ AcpiEvExecuteRegMethod (
|
||||
UINT32 Function)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT *Params[3];
|
||||
ACPI_OPERAND_OBJECT SpaceIdDesc;
|
||||
ACPI_OPERAND_OBJECT FunctionDesc;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
@ -239,30 +237,37 @@ AcpiEvExecuteRegMethod (
|
||||
* 0 for disconnecting the handler
|
||||
* Passed as a parameter
|
||||
*/
|
||||
AcpiUtInitStaticObject (&SpaceIdDesc);
|
||||
AcpiUtInitStaticObject (&FunctionDesc);
|
||||
Params[0] = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!Params[0])
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/*
|
||||
* Method requires two parameters.
|
||||
*/
|
||||
Params [0] = &SpaceIdDesc;
|
||||
Params [1] = &FunctionDesc;
|
||||
Params [2] = NULL;
|
||||
Params[1] = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!Params[1])
|
||||
{
|
||||
AcpiUtRemoveReference (Params[0]);
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Params[2] = NULL;
|
||||
|
||||
/*
|
||||
* Set up the parameter objects
|
||||
*/
|
||||
SpaceIdDesc.Common.Type = ACPI_TYPE_INTEGER;
|
||||
SpaceIdDesc.Integer.Value = RegionObj->Region.SpaceId;
|
||||
|
||||
FunctionDesc.Common.Type = ACPI_TYPE_INTEGER;
|
||||
FunctionDesc.Integer.Value = Function;
|
||||
Params[0]->Integer.Value = RegionObj->Region.SpaceId;
|
||||
Params[1]->Integer.Value = Function;
|
||||
|
||||
/*
|
||||
* Execute the method, no return value
|
||||
*/
|
||||
DEBUG_EXEC(AcpiUtDisplayInitPathname (RegionObj->Region.Extra->Extra.Method_REG, " [Method]"));
|
||||
Status = AcpiNsEvaluateByHandle (RegionObj->Region.Extra->Extra.Method_REG, Params, NULL);
|
||||
|
||||
|
||||
AcpiUtRemoveReference (Params[0]);
|
||||
AcpiUtRemoveReference (Params[1]);
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evrgnini- ACPI AddressSpace (OpRegion) init
|
||||
* $Revision: 46 $
|
||||
* $Revision: 47 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -371,6 +371,71 @@ AcpiEvPciConfigRegionSetup (
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvPciBarRegionSetup
|
||||
*
|
||||
* PARAMETERS: RegionObj - region we are interested in
|
||||
* Function - start or stop
|
||||
* HandlerContext - Address space handler context
|
||||
* RegionContext - Region specific context
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Do any prep work for region handling
|
||||
*
|
||||
* MUTEX: Assumes namespace is not locked
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvPciBarRegionSetup (
|
||||
ACPI_HANDLE Handle,
|
||||
UINT32 Function,
|
||||
void *HandlerContext,
|
||||
void **RegionContext)
|
||||
{
|
||||
|
||||
FUNCTION_TRACE ("EvPciBarRegionSetup");
|
||||
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvCmosRegionSetup
|
||||
*
|
||||
* PARAMETERS: RegionObj - region we are interested in
|
||||
* Function - start or stop
|
||||
* HandlerContext - Address space handler context
|
||||
* RegionContext - Region specific context
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Do any prep work for region handling
|
||||
*
|
||||
* MUTEX: Assumes namespace is not locked
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvCmosRegionSetup (
|
||||
ACPI_HANDLE Handle,
|
||||
UINT32 Function,
|
||||
void *HandlerContext,
|
||||
void **RegionContext)
|
||||
{
|
||||
|
||||
FUNCTION_TRACE ("EvCmosRegionSetup");
|
||||
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvDefaultRegionSetup
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evxface - External interfaces for ACPI events
|
||||
* $Revision: 112 $
|
||||
* $Revision: 114 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -156,14 +156,6 @@ AcpiInstallFixedEventHandler (
|
||||
FUNCTION_TRACE ("AcpiInstallFixedEventHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (Event > ACPI_EVENT_MAX)
|
||||
@ -187,7 +179,7 @@ AcpiInstallFixedEventHandler (
|
||||
AcpiGbl_FixedEventHandlers[Event].Handler = Handler;
|
||||
AcpiGbl_FixedEventHandlers[Event].Context = Context;
|
||||
|
||||
Status = AcpiEnableEvent (Event, ACPI_EVENT_FIXED);
|
||||
Status = AcpiEnableEvent (Event, ACPI_EVENT_FIXED, 0);
|
||||
if (!ACPI_SUCCESS (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Could not enable fixed event.\n"));
|
||||
@ -235,14 +227,6 @@ AcpiRemoveFixedEventHandler (
|
||||
FUNCTION_TRACE ("AcpiRemoveFixedEventHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (Event > ACPI_EVENT_MAX)
|
||||
@ -254,7 +238,7 @@ AcpiRemoveFixedEventHandler (
|
||||
|
||||
/* Disable the event before removing the handler - just in case... */
|
||||
|
||||
Status = AcpiDisableEvent(Event, ACPI_EVENT_FIXED);
|
||||
Status = AcpiDisableEvent(Event, ACPI_EVENT_FIXED, 0);
|
||||
|
||||
/* Always Remove the handler */
|
||||
|
||||
@ -311,14 +295,6 @@ AcpiInstallNotifyHandler (
|
||||
FUNCTION_TRACE ("AcpiInstallNotifyHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if ((!Handler) ||
|
||||
@ -492,14 +468,6 @@ AcpiRemoveNotifyHandler (
|
||||
FUNCTION_TRACE ("AcpiRemoveNotifyHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if ((!Handler) ||
|
||||
@ -643,14 +611,6 @@ AcpiInstallGpeHandler (
|
||||
FUNCTION_TRACE ("AcpiInstallGpeHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (!Handler || (GpeNumber > ACPI_GPE_MAX))
|
||||
@ -716,14 +676,6 @@ AcpiRemoveGpeHandler (
|
||||
FUNCTION_TRACE ("AcpiRemoveGpeHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (!Handler || (GpeNumber > ACPI_GPE_MAX))
|
||||
@ -783,14 +735,6 @@ AcpiAcquireGlobalLock (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
Status = AcpiExEnterInterpreter ();
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -824,17 +768,6 @@ ACPI_STATUS
|
||||
AcpiReleaseGlobalLock (
|
||||
void)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
AcpiEvReleaseGlobalLock ();
|
||||
return (AE_OK);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
|
||||
* $Revision: 36 $
|
||||
* $Revision: 38 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -202,14 +202,6 @@ AcpiDisable (void)
|
||||
FUNCTION_TRACE ("AcpiDisable");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Restore original mode */
|
||||
|
||||
Status = AcpiHwSetMode (AcpiGbl_OriginalMode);
|
||||
@ -234,6 +226,7 @@ AcpiDisable (void)
|
||||
*
|
||||
* PARAMETERS: Event - The fixed event or GPE to be enabled
|
||||
* Type - The type of event
|
||||
* Flags - Just enable, or also wake enable?
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -244,7 +237,8 @@ AcpiDisable (void)
|
||||
ACPI_STATUS
|
||||
AcpiEnableEvent (
|
||||
UINT32 Event,
|
||||
UINT32 Type)
|
||||
UINT32 Type,
|
||||
UINT32 Flags)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT32 RegisterId;
|
||||
@ -253,14 +247,6 @@ AcpiEnableEvent (
|
||||
FUNCTION_TRACE ("AcpiEnableEvent");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* The Type must be either Fixed AcpiEvent or GPE */
|
||||
|
||||
switch (Type)
|
||||
@ -326,7 +312,15 @@ AcpiEnableEvent (
|
||||
|
||||
/* Enable the requested GPE number */
|
||||
|
||||
AcpiHwEnableGpe (Event);
|
||||
if (Flags & ACPI_EVENT_ENABLE)
|
||||
{
|
||||
AcpiHwEnableGpe (Event);
|
||||
}
|
||||
if (Flags & ACPI_EVENT_WAKE_ENABLE)
|
||||
{
|
||||
AcpiHwEnableGpeForWakeup (Event);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
@ -345,7 +339,8 @@ AcpiEnableEvent (
|
||||
* FUNCTION: AcpiDisableEvent
|
||||
*
|
||||
* PARAMETERS: Event - The fixed event or GPE to be enabled
|
||||
* Type - The type of event
|
||||
* Type - The type of event, fixed or general purpose
|
||||
* Flags - Wake disable vs. non-wake disable
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -356,7 +351,8 @@ AcpiEnableEvent (
|
||||
ACPI_STATUS
|
||||
AcpiDisableEvent (
|
||||
UINT32 Event,
|
||||
UINT32 Type)
|
||||
UINT32 Type,
|
||||
UINT32 Flags)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT32 RegisterId;
|
||||
@ -365,14 +361,6 @@ AcpiDisableEvent (
|
||||
FUNCTION_TRACE ("AcpiDisableEvent");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* The Type must be either Fixed AcpiEvent or GPE */
|
||||
|
||||
switch (Type)
|
||||
@ -437,7 +425,15 @@ AcpiDisableEvent (
|
||||
|
||||
/* Disable the requested GPE number */
|
||||
|
||||
AcpiHwDisableGpe (Event);
|
||||
if (Flags & ACPI_EVENT_DISABLE)
|
||||
{
|
||||
AcpiHwDisableGpe (Event);
|
||||
}
|
||||
if (Flags & ACPI_EVENT_WAKE_DISABLE)
|
||||
{
|
||||
AcpiHwDisableGpeForWakeup (Event);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
@ -474,14 +470,6 @@ AcpiClearEvent (
|
||||
FUNCTION_TRACE ("AcpiClearEvent");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* The Type must be either Fixed AcpiEvent or GPE */
|
||||
|
||||
switch (Type)
|
||||
@ -579,14 +567,6 @@ AcpiGetEventStatus (
|
||||
FUNCTION_TRACE ("AcpiGetEventStatus");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (!EventStatus)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: evxfregn - External Interfaces, ACPI Operation Regions and
|
||||
* Address Spaces.
|
||||
* $Revision: 36 $
|
||||
* $Revision: 38 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -163,14 +163,6 @@ AcpiInstallAddressSpaceHandler (
|
||||
FUNCTION_TRACE ("AcpiInstallAddressSpaceHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if ((!Device) ||
|
||||
@ -213,17 +205,27 @@ AcpiInstallAddressSpaceHandler (
|
||||
{
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
Handler = AcpiExSystemMemorySpaceHandler;
|
||||
Setup = AcpiEvSystemMemoryRegionSetup;
|
||||
Setup = AcpiEvSystemMemoryRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
Handler = AcpiExSystemIoSpaceHandler;
|
||||
Setup = AcpiEvIoSpaceRegionSetup;
|
||||
Setup = AcpiEvIoSpaceRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_PCI_CONFIG:
|
||||
Handler = AcpiExPciConfigSpaceHandler;
|
||||
Setup = AcpiEvPciConfigRegionSetup;
|
||||
Setup = AcpiEvPciConfigRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_CMOS:
|
||||
Handler = AcpiExCmosSpaceHandler;
|
||||
Setup = AcpiEvCmosRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_PCI_BAR_TARGET:
|
||||
Handler = AcpiExPciBarSpaceHandler;
|
||||
Setup = AcpiEvPciBarRegionSetup;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -401,14 +403,6 @@ AcpiRemoveAddressSpaceHandler (
|
||||
FUNCTION_TRACE ("AcpiRemoveAddressSpaceHandler");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if ((!Device) ||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
|
||||
* $Revision: 41 $
|
||||
* $Revision: 42 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -348,8 +348,7 @@ AcpiExUnloadTable (
|
||||
*
|
||||
* FUNCTION: AcpiExReconfiguration
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current state of the parse tree walk
|
||||
* PARAMETERS: WalkState - Current state of the parse tree walk
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -359,7 +358,6 @@ AcpiExUnloadTable (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExReconfiguration (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
@ -373,7 +371,7 @@ AcpiExReconfiguration (
|
||||
|
||||
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
case AML_LOAD_OP:
|
||||
@ -390,7 +388,7 @@ AcpiExReconfiguration (
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "bad opcode=%X\n", Opcode));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "bad opcode=%X\n", WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
break;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exconvrt - Object conversion routines
|
||||
* $Revision: 22 $
|
||||
* $Revision: 23 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -404,8 +404,9 @@ AcpiExConvertToAscii (
|
||||
UINT32 k = 0;
|
||||
UINT8 HexDigit;
|
||||
ACPI_INTEGER Digit;
|
||||
BOOLEAN LeadingZero = TRUE;
|
||||
UINT32 Remainder;
|
||||
UINT32 Length = sizeof (ACPI_INTEGER);
|
||||
BOOLEAN LeadingZero = TRUE;
|
||||
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
@ -415,6 +416,7 @@ AcpiExConvertToAscii (
|
||||
{
|
||||
case 10:
|
||||
|
||||
Remainder = 0;
|
||||
for (i = ACPI_MAX_DECIMAL_DIGITS; i > 0 ; i--)
|
||||
{
|
||||
/* Divide by nth factor of 10 */
|
||||
@ -422,7 +424,7 @@ AcpiExConvertToAscii (
|
||||
Digit = Integer;
|
||||
for (j = 1; j < i; j++)
|
||||
{
|
||||
Digit = ACPI_DIVIDE (Digit, 10);
|
||||
AcpiUtShortDivide (&Digit, 10, &Digit, &Remainder);
|
||||
}
|
||||
|
||||
/* Create the decimal digit */
|
||||
@ -434,7 +436,7 @@ AcpiExConvertToAscii (
|
||||
|
||||
if (!LeadingZero)
|
||||
{
|
||||
String[k] = (UINT8) (ASCII_ZERO + ACPI_MODULO (Digit, 10));
|
||||
String[k] = (UINT8) (ASCII_ZERO + Remainder);
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: excreate - Named object creation
|
||||
* $Revision: 65 $
|
||||
* $Revision: 68 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -136,6 +136,7 @@
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* Operands - List of operands for the opcode
|
||||
* WalkState - Current state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -161,7 +162,7 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateBufferField (
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
@ -200,8 +201,8 @@ AcpiExCreateBufferField (
|
||||
* opcode and operands -- since the buffer and index
|
||||
* operands must be evaluated.
|
||||
*/
|
||||
ObjDesc->BufferField.Extra->Extra.Pcode = AmlPtr;
|
||||
ObjDesc->BufferField.Extra->Extra.PcodeLength = AmlLength;
|
||||
ObjDesc->BufferField.Extra->Extra.AmlStart = AmlStart;
|
||||
ObjDesc->BufferField.Extra->Extra.AmlLength = AmlLength;
|
||||
ObjDesc->BufferField.Node = Node;
|
||||
|
||||
|
||||
@ -257,7 +258,6 @@ AcpiExCreateBufferField (
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* Store constructed field descriptor in result location */
|
||||
|
||||
Status = AcpiExStore (ObjDesc, (ACPI_OPERAND_OBJECT *) Node,
|
||||
@ -272,7 +272,6 @@ AcpiExCreateBufferField (
|
||||
AcpiUtRemoveReference (ObjDesc);
|
||||
}
|
||||
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
|
||||
|
||||
@ -319,12 +318,8 @@ AcpiExCreateAlias (
|
||||
|
||||
/* Get the source/alias operands (both namespace nodes) */
|
||||
|
||||
Status = AcpiDsObjStackPopObject ((ACPI_OPERAND_OBJECT **) &SourceNode,
|
||||
WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
SourceNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[WalkState->NumOperands -1];
|
||||
WalkState->NumOperands--;
|
||||
|
||||
/*
|
||||
* Don't pop it, it gets removed in the calling routine
|
||||
@ -359,7 +354,7 @@ AcpiExCreateAlias (
|
||||
*
|
||||
* FUNCTION: AcpiExCreateEvent
|
||||
*
|
||||
* PARAMETERS: None
|
||||
* PARAMETERS: WalkState - Current state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -419,8 +414,7 @@ AcpiExCreateEvent (
|
||||
*
|
||||
* FUNCTION: AcpiExCreateMutex
|
||||
*
|
||||
* PARAMETERS: InterpreterMode - Current running mode (load1/Load2/Exec)
|
||||
* Operands - List of operands for the opcode
|
||||
* PARAMETERS: WalkState - Current state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -442,11 +436,8 @@ AcpiExCreateMutex (
|
||||
|
||||
/* Get the operand */
|
||||
|
||||
Status = AcpiDsObjStackPopObject (&SyncDesc, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
SyncDesc = WalkState->Operands[WalkState->NumOperands -1];
|
||||
WalkState->NumOperands--;
|
||||
|
||||
/* Attempt to allocate a new object */
|
||||
|
||||
@ -494,10 +485,10 @@ AcpiExCreateMutex (
|
||||
*
|
||||
* FUNCTION: AcpiExCreateRegion
|
||||
*
|
||||
* PARAMETERS: AmlPtr - Pointer to the region declaration AML
|
||||
* PARAMETERS: AmlStart - Pointer to the region declaration AML
|
||||
* AmlLength - Max length of the declaration AML
|
||||
* Operands - List of operands for the opcode
|
||||
* InterpreterMode - Load1/Load2/Execute
|
||||
* WalkState - Current state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -507,7 +498,7 @@ AcpiExCreateMutex (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateRegion (
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
UINT8 RegionSpace,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
@ -563,8 +554,8 @@ AcpiExCreateRegion (
|
||||
* Remember location in AML stream of address & length
|
||||
* operands since they need to be evaluated at run time.
|
||||
*/
|
||||
ObjDesc->Region.Extra->Extra.Pcode = AmlPtr;
|
||||
ObjDesc->Region.Extra->Extra.PcodeLength = AmlLength;
|
||||
ObjDesc->Region.Extra->Extra.AmlStart = AmlStart;
|
||||
ObjDesc->Region.Extra->Extra.AmlLength = AmlLength;
|
||||
|
||||
/* Init the region from the operands */
|
||||
|
||||
@ -623,6 +614,44 @@ AcpiExCreateRegion (
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExCreateTableRegion
|
||||
*
|
||||
* PARAMETERS: WalkState - Current state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Create a new DataTableRegion object
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateTableRegion (
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("ExCreateTableRegion");
|
||||
|
||||
/*
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION);
|
||||
if (!ObjDesc)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
Cleanup:
|
||||
*/
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExCreateProcessor
|
||||
@ -780,7 +809,7 @@ AcpiExCreatePowerResource (
|
||||
*
|
||||
* FUNCTION: AcpiExCreateMethod
|
||||
*
|
||||
* PARAMETERS: AmlPtr - First byte of the method's AML
|
||||
* PARAMETERS: AmlStart - First byte of the method's AML
|
||||
* AmlLength - AML byte count for this method
|
||||
* MethodFlags - AML method flag byte
|
||||
* Method - Method Node
|
||||
@ -793,7 +822,7 @@ AcpiExCreatePowerResource (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCreateMethod (
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 AmlLength,
|
||||
UINT32 MethodFlags,
|
||||
ACPI_NAMESPACE_NODE *Method)
|
||||
@ -815,8 +844,8 @@ AcpiExCreateMethod (
|
||||
|
||||
/* Get the method's AML pointer/length from the Op */
|
||||
|
||||
ObjDesc->Method.Pcode = AmlPtr;
|
||||
ObjDesc->Method.PcodeLength = AmlLength;
|
||||
ObjDesc->Method.AmlStart = AmlStart;
|
||||
ObjDesc->Method.AmlLength = AmlLength;
|
||||
|
||||
/*
|
||||
* First argument is the Method Flags (contains parameter count for the
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exdump - Interpreter debug output routines
|
||||
* $Revision: 122 $
|
||||
* $Revision: 124 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -138,12 +138,12 @@
|
||||
* FUNCTION: AcpiExShowHexValue
|
||||
*
|
||||
* PARAMETERS: ByteCount - Number of bytes to print (1, 2, or 4)
|
||||
* *AmlPtr - Address in AML stream of bytes to print
|
||||
* *AmlStart - Address in AML stream of bytes to print
|
||||
* InterpreterMode - Current running mode (load1/Load2/Exec)
|
||||
* LeadSpace - # of spaces to print ahead of value
|
||||
* 0 => none ahead but one behind
|
||||
*
|
||||
* DESCRIPTION: Print ByteCount byte(s) starting at AmlPtr as a single
|
||||
* DESCRIPTION: Print ByteCount byte(s) starting at AmlStart as a single
|
||||
* value, in hex. If ByteCount > 1 or the value printed is > 9, also
|
||||
* print in decimal.
|
||||
*
|
||||
@ -152,7 +152,7 @@
|
||||
void
|
||||
AcpiExShowHexValue (
|
||||
UINT32 ByteCount,
|
||||
UINT8 *AmlPtr,
|
||||
UINT8 *AmlStart,
|
||||
UINT32 LeadSpace)
|
||||
{
|
||||
UINT32 Value; /* Value retrieved from AML stream */
|
||||
@ -164,7 +164,7 @@ AcpiExShowHexValue (
|
||||
FUNCTION_TRACE ("ExShowHexValue");
|
||||
|
||||
|
||||
if (!AmlPtr)
|
||||
if (!AmlStart)
|
||||
{
|
||||
REPORT_ERROR (("ExShowHexValue: null pointer\n"));
|
||||
}
|
||||
@ -173,9 +173,9 @@ AcpiExShowHexValue (
|
||||
* AML numbers are always stored little-endian,
|
||||
* even if the processor is big-endian.
|
||||
*/
|
||||
for (CurrentAmlPtr = AmlPtr + ByteCount,
|
||||
for (CurrentAmlPtr = AmlStart + ByteCount,
|
||||
Value = 0;
|
||||
CurrentAmlPtr > AmlPtr; )
|
||||
CurrentAmlPtr > AmlStart; )
|
||||
{
|
||||
Value = (Value << 8) + (UINT32)* --CurrentAmlPtr;
|
||||
}
|
||||
@ -201,7 +201,7 @@ AcpiExShowHexValue (
|
||||
|
||||
while (ByteCount--)
|
||||
{
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, "%02x", *AmlPtr++));
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, "%02x", *AmlStart++));
|
||||
|
||||
if (ByteCount)
|
||||
{
|
||||
@ -308,6 +308,12 @@ AcpiExDumpOperand (
|
||||
break;
|
||||
|
||||
|
||||
case AML_REVISION_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "Reference: Revision\n"));
|
||||
break;
|
||||
|
||||
|
||||
case AML_DEBUG_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "Reference: Debug\n"));
|
||||
@ -562,7 +568,7 @@ AcpiExDumpOperand (
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,
|
||||
"Method(%X) @ %p:%lX\n",
|
||||
EntryDesc->Method.ParamCount,
|
||||
EntryDesc->Method.Pcode, EntryDesc->Method.PcodeLength));
|
||||
EntryDesc->Method.AmlStart, EntryDesc->Method.AmlLength));
|
||||
break;
|
||||
|
||||
|
||||
@ -841,8 +847,8 @@ AcpiExDumpObjectDescriptor (
|
||||
AcpiOsPrintf ("%20s : %X\n", "ParamCount", ObjDesc->Method.ParamCount);
|
||||
AcpiOsPrintf ("%20s : %X\n", "Concurrency", ObjDesc->Method.Concurrency);
|
||||
AcpiOsPrintf ("%20s : %p\n", "Semaphore", ObjDesc->Method.Semaphore);
|
||||
AcpiOsPrintf ("%20s : %X\n", "PcodeLength", ObjDesc->Method.PcodeLength);
|
||||
AcpiOsPrintf ("%20s : %X\n", "Pcode", ObjDesc->Method.Pcode);
|
||||
AcpiOsPrintf ("%20s : %X\n", "AmlLength", ObjDesc->Method.AmlLength);
|
||||
AcpiOsPrintf ("%20s : %X\n", "AmlStart", ObjDesc->Method.AmlStart);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exdyadic - ACPI AML execution for dyadic (2-operand) operators
|
||||
* $Revision: 88 $
|
||||
* $Revision: 91 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -314,8 +314,7 @@ AcpiExDoConcatenate (
|
||||
*
|
||||
* FUNCTION: AcpiExDyadic1
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current walk state
|
||||
* PARAMETERS: WalkState - Current walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -328,7 +327,6 @@ AcpiExDoConcatenate (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic1 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
@ -342,19 +340,17 @@ AcpiExDyadic1 (
|
||||
|
||||
/* Examine the opcode */
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
/* DefNotify := NotifyOp (0)NotifyObject (1)NotifyValue */
|
||||
case AML_NOTIFY_OP: /* Notify (NotifyObject, NotifyValue) */
|
||||
|
||||
case AML_NOTIFY_OP:
|
||||
|
||||
/* The ObjDesc is actually an Node */
|
||||
/* The first operand is a namespace node */
|
||||
|
||||
Node = (ACPI_NAMESPACE_NODE *) Operand[0];
|
||||
Operand[0] = NULL;
|
||||
|
||||
/* Object must be a device or thermal zone */
|
||||
/* The node must refer to a device or thermal zone */
|
||||
|
||||
if (Node && Operand[1])
|
||||
{
|
||||
@ -376,7 +372,7 @@ AcpiExDyadic1 (
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unexpected notify object type %X\n",
|
||||
Operand[0]->Common.Type));
|
||||
Node->Type));
|
||||
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
break;
|
||||
@ -386,12 +382,11 @@ AcpiExDyadic1 (
|
||||
|
||||
default:
|
||||
|
||||
REPORT_ERROR (("AcpiExDyadic1: Unknown dyadic opcode %X\n", Opcode));
|
||||
REPORT_ERROR (("AcpiExDyadic1: Unknown dyadic opcode %X\n", WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Always delete both operands */
|
||||
|
||||
AcpiUtRemoveReference (Operand[1]);
|
||||
@ -406,9 +401,7 @@ AcpiExDyadic1 (
|
||||
*
|
||||
* FUNCTION: AcpiExDyadic2R
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current walk state
|
||||
* ReturnDesc - Where to store the return object
|
||||
* PARAMETERS: WalkState - Current walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -421,9 +414,7 @@ AcpiExDyadic1 (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic2R (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
@ -431,12 +422,12 @@ AcpiExDyadic2R (
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
FUNCTION_TRACE_U32 ("ExDyadic2R", Opcode);
|
||||
FUNCTION_TRACE_U32 ("ExDyadic2R", WalkState->Opcode);
|
||||
|
||||
|
||||
/* Create an internal return object if necessary */
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
case AML_ADD_OP:
|
||||
case AML_BIT_AND_OP:
|
||||
@ -465,71 +456,56 @@ AcpiExDyadic2R (
|
||||
/*
|
||||
* Execute the opcode
|
||||
*/
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
/* DefAdd := AddOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_ADD_OP:
|
||||
case AML_ADD_OP: /* Add (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value +
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefAnd := AndOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_BIT_AND_OP:
|
||||
case AML_BIT_AND_OP: /* And (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value &
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefNAnd := NAndOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_BIT_NAND_OP:
|
||||
case AML_BIT_NAND_OP: /* NAnd (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = ~(Operand[0]->Integer.Value &
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefOr := OrOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_BIT_OR_OP:
|
||||
case AML_BIT_OR_OP: /* Or (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value |
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefNOr := NOrOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_BIT_NOR_OP:
|
||||
case AML_BIT_NOR_OP: /* NOr (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = ~(Operand[0]->Integer.Value |
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefXOr := XOrOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_BIT_XOR_OP:
|
||||
case AML_BIT_XOR_OP: /* XOr (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value ^
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefDivide := DivideOp Dividend Divisor Remainder Quotient */
|
||||
|
||||
case AML_DIVIDE_OP:
|
||||
case AML_DIVIDE_OP: /* Divide (Dividend, Divisor, RemainderResult QuotientRsult) */
|
||||
|
||||
if (!Operand[1]->Integer.Value)
|
||||
{
|
||||
REPORT_ERROR
|
||||
(("DivideOp: Divide by zero\n"));
|
||||
REPORT_ERROR (("DivideOp: Divide by zero\n"));
|
||||
|
||||
Status = AE_AML_DIVIDE_BY_ZERO;
|
||||
goto Cleanup;
|
||||
@ -542,77 +518,63 @@ AcpiExDyadic2R (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Remainder (modulo) */
|
||||
/*
|
||||
* RetDesc2 will contain the quotient,
|
||||
* RetDesc will contain the remainder
|
||||
*/
|
||||
Status = AcpiUtDivide (&Operand[0]->Integer.Value, &Operand[1]->Integer.Value,
|
||||
&RetDesc2->Integer.Value, &RetDesc->Integer.Value);
|
||||
|
||||
RetDesc->Integer.Value = ACPI_MODULO (Operand[0]->Integer.Value,
|
||||
Operand[1]->Integer.Value);
|
||||
|
||||
/* Result (what we used to call the quotient) */
|
||||
|
||||
RetDesc2->Integer.Value = ACPI_DIVIDE (Operand[0]->Integer.Value,
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefMod := ModOp Dividend Divisor Remainder */
|
||||
|
||||
case AML_MOD_OP: /* ACPI 2.0 */
|
||||
case AML_MOD_OP: /* Mod (Dividend, Divisor, RemainderResult (ACPI 2.0) */
|
||||
|
||||
if (!Operand[1]->Integer.Value)
|
||||
{
|
||||
REPORT_ERROR
|
||||
(("ModOp: Divide by zero\n"));
|
||||
REPORT_ERROR (("ModOp: Divide by zero\n"));
|
||||
|
||||
Status = AE_AML_DIVIDE_BY_ZERO;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Remainder (modulo) */
|
||||
/* RetDesc will contain the remainder */
|
||||
|
||||
Status = AcpiUtDivide (&Operand[0]->Integer.Value, &Operand[1]->Integer.Value,
|
||||
NULL, &RetDesc->Integer.Value);
|
||||
|
||||
RetDesc->Integer.Value = ACPI_MODULO (Operand[0]->Integer.Value,
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefMultiply := MultiplyOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_MULTIPLY_OP:
|
||||
case AML_MULTIPLY_OP: /* Multiply (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value *
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefShiftLeft := ShiftLeftOp Operand ShiftCount Result */
|
||||
|
||||
case AML_SHIFT_LEFT_OP:
|
||||
case AML_SHIFT_LEFT_OP: /* ShiftLeft (Operand, ShiftCount, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value <<
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefShiftRight := ShiftRightOp Operand ShiftCount Result */
|
||||
|
||||
case AML_SHIFT_RIGHT_OP:
|
||||
case AML_SHIFT_RIGHT_OP: /* ShiftRight (Operand, ShiftCount, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value >>
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefSubtract := SubtractOp Operand1 Operand2 Result */
|
||||
|
||||
case AML_SUBTRACT_OP:
|
||||
case AML_SUBTRACT_OP: /* Subtract (Operand1, Operand2, Result) */
|
||||
|
||||
RetDesc->Integer.Value = Operand[0]->Integer.Value -
|
||||
Operand[1]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefConcat := ConcatOp Data1 Data2 Result */
|
||||
|
||||
case AML_CONCAT_OP:
|
||||
case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */
|
||||
|
||||
/*
|
||||
* Convert the second operand if necessary. The first operand
|
||||
@ -644,7 +606,6 @@ AcpiExDyadic2R (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Both operands are now known to be the same object type
|
||||
* (Both are Integer, String, or Buffer), and we can now perform the
|
||||
@ -658,18 +619,14 @@ AcpiExDyadic2R (
|
||||
break;
|
||||
|
||||
|
||||
/* DefToString := Buffer, Length, Result */
|
||||
|
||||
case AML_TO_STRING_OP: /* ACPI 2.0 */
|
||||
case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */
|
||||
|
||||
Status = AcpiExConvertToString (Operand[0], &RetDesc, 16,
|
||||
(UINT32) Operand[1]->Integer.Value, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
/* DefConcatRes := Buffer, Buffer, Result */
|
||||
|
||||
case AML_CONCAT_RES_OP: /* ACPI 2.0 */
|
||||
case AML_CONCAT_RES_OP: /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */
|
||||
|
||||
Status = AE_NOT_IMPLEMENTED;
|
||||
goto Cleanup;
|
||||
@ -679,7 +636,7 @@ AcpiExDyadic2R (
|
||||
default:
|
||||
|
||||
REPORT_ERROR (("AcpiExDyadic2R: Unknown dyadic opcode %X\n",
|
||||
Opcode));
|
||||
WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
goto Cleanup;
|
||||
}
|
||||
@ -696,7 +653,7 @@ AcpiExDyadic2R (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
if (AML_DIVIDE_OP == Opcode)
|
||||
if (AML_DIVIDE_OP == WalkState->Opcode)
|
||||
{
|
||||
Status = AcpiExStore (RetDesc2, Operand[3], WalkState);
|
||||
|
||||
@ -705,12 +662,12 @@ AcpiExDyadic2R (
|
||||
* the object we created earlier
|
||||
*/
|
||||
AcpiUtRemoveReference (RetDesc);
|
||||
*ReturnDesc = RetDesc2;
|
||||
WalkState->ResultObj = RetDesc2;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
}
|
||||
|
||||
|
||||
@ -750,9 +707,7 @@ AcpiExDyadic2R (
|
||||
*
|
||||
* FUNCTION: AcpiExDyadic2S
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current walk state
|
||||
* ReturnDesc - Where to store the return object
|
||||
* PARAMETERS: WalkState - Current walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -764,9 +719,7 @@ AcpiExDyadic2R (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic2S (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
@ -793,20 +746,16 @@ AcpiExDyadic2S (
|
||||
|
||||
/* Examine the opcode */
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
/* DefAcquire := AcquireOp MutexObject Timeout */
|
||||
|
||||
case AML_ACQUIRE_OP:
|
||||
case AML_ACQUIRE_OP: /* Acquire (MutexObject, Timeout) */
|
||||
|
||||
Status = AcpiExAcquireMutex (Operand[1], Operand[0], WalkState);
|
||||
break;
|
||||
|
||||
|
||||
/* DefWait := WaitOp AcpiEventObject Timeout */
|
||||
|
||||
case AML_WAIT_OP:
|
||||
case AML_WAIT_OP: /* Wait (EventObject, Timeout) */
|
||||
|
||||
Status = AcpiExSystemWaitEvent (Operand[1], Operand[0]);
|
||||
break;
|
||||
@ -814,7 +763,7 @@ AcpiExDyadic2S (
|
||||
|
||||
default:
|
||||
|
||||
REPORT_ERROR (("AcpiExDyadic2S: Unknown dyadic synchronization opcode %X\n", Opcode));
|
||||
REPORT_ERROR (("AcpiExDyadic2S: Unknown dyadic synchronization opcode %X\n", WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
goto Cleanup;
|
||||
}
|
||||
@ -850,7 +799,7 @@ AcpiExDyadic2S (
|
||||
|
||||
/* Set the return object and exit */
|
||||
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -859,9 +808,7 @@ AcpiExDyadic2S (
|
||||
*
|
||||
* FUNCTION: AcpiExDyadic2
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current walk state
|
||||
* ReturnDesc - Where to store the return object
|
||||
* PARAMETERS: WalkState - Current walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -875,9 +822,7 @@ AcpiExDyadic2S (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExDyadic2 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
@ -898,60 +843,48 @@ AcpiExDyadic2 (
|
||||
}
|
||||
|
||||
/*
|
||||
* Execute the Opcode
|
||||
* Execute the WalkState->Opcode
|
||||
*/
|
||||
Lboolean = FALSE;
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
/* DefLAnd := LAndOp Operand1 Operand2 */
|
||||
|
||||
case AML_LAND_OP:
|
||||
case AML_LAND_OP: /* LAnd (Operand1, Operand2) */
|
||||
|
||||
Lboolean = (BOOLEAN) (Operand[0]->Integer.Value &&
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefLEqual := LEqualOp Operand1 Operand2 */
|
||||
|
||||
case AML_LEQUAL_OP:
|
||||
case AML_LEQUAL_OP: /* LEqual (Operand1, Operand2) */
|
||||
|
||||
Lboolean = (BOOLEAN) (Operand[0]->Integer.Value ==
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefLGreater := LGreaterOp Operand1 Operand2 */
|
||||
|
||||
case AML_LGREATER_OP:
|
||||
case AML_LGREATER_OP: /* LGreater (Operand1, Operand2) */
|
||||
|
||||
Lboolean = (BOOLEAN) (Operand[0]->Integer.Value >
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefLLess := LLessOp Operand1 Operand2 */
|
||||
|
||||
case AML_LLESS_OP:
|
||||
case AML_LLESS_OP: /* LLess (Operand1, Operand2) */
|
||||
|
||||
Lboolean = (BOOLEAN) (Operand[0]->Integer.Value <
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefLOr := LOrOp Operand1 Operand2 */
|
||||
|
||||
case AML_LOR_OP:
|
||||
case AML_LOR_OP: /* LOr (Operand1, Operand2) */
|
||||
|
||||
Lboolean = (BOOLEAN) (Operand[0]->Integer.Value ||
|
||||
Operand[1]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefCopy := Source, Destination */
|
||||
|
||||
case AML_COPY_OP: /* ACPI 2.0 */
|
||||
case AML_COPY_OP: /* Copy (Source, Target) (ACPI 2.0) */
|
||||
|
||||
Status = AE_NOT_IMPLEMENTED;
|
||||
goto Cleanup;
|
||||
@ -960,7 +893,7 @@ AcpiExDyadic2 (
|
||||
|
||||
default:
|
||||
|
||||
REPORT_ERROR (("AcpiExDyadic2: Unknown dyadic opcode %X\n", Opcode));
|
||||
REPORT_ERROR (("AcpiExDyadic2: Unknown dyadic opcode %X\n", WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
goto Cleanup;
|
||||
break;
|
||||
@ -999,7 +932,7 @@ AcpiExDyadic2 (
|
||||
|
||||
/* Set the return object and exit */
|
||||
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
|
||||
* $Revision: 83 $
|
||||
* $Revision: 87 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -134,9 +134,7 @@
|
||||
*
|
||||
* FUNCTION: AcpiExTriadic
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current walk state
|
||||
* ReturnDesc - Where to store the return object
|
||||
* PARAMETERS: WalkState - Current walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -148,14 +146,13 @@
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExTriadic (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *TmpDesc;
|
||||
ACPI_SIGNAL_FATAL_INFO *Fatal;
|
||||
UINT32 Temp;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
@ -167,7 +164,7 @@ AcpiExTriadic (
|
||||
#define ResDesc Operand[2]
|
||||
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
case AML_FATAL_OP:
|
||||
@ -183,8 +180,8 @@ AcpiExTriadic (
|
||||
Fatal = ACPI_MEM_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO));
|
||||
if (Fatal)
|
||||
{
|
||||
Fatal->Type = (UINT32) ObjDesc1->Integer.Value;
|
||||
Fatal->Code = (UINT32) ObjDesc2->Integer.Value;
|
||||
Fatal->Type = (UINT32) ObjDesc1->Integer.Value;
|
||||
Fatal->Code = (UINT32) ObjDesc2->Integer.Value;
|
||||
Fatal->Argument = (UINT32) ResDesc->Integer.Value;
|
||||
}
|
||||
|
||||
@ -196,15 +193,65 @@ AcpiExTriadic (
|
||||
/* Might return while OS is shutting down */
|
||||
|
||||
ACPI_MEM_FREE (Fatal);
|
||||
AcpiUtRemoveReference (Operand[2]);
|
||||
break;
|
||||
|
||||
|
||||
case AML_MID_OP:
|
||||
|
||||
/* DefMid := MidOp Source Index Length Result */
|
||||
/* DefMid := MidOp (0)Source (1)Index (2)Length (3)Result */
|
||||
|
||||
/* Create the internal return object (string or buffer) */
|
||||
/*
|
||||
* Create the return object. The Source operand is guaranteed to be
|
||||
* either a String or a Buffer, so just use its type.
|
||||
*/
|
||||
RetDesc = AcpiUtCreateInternalObject (ObjDesc1->Common.Type);
|
||||
if (!RetDesc)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the index is beyond the length of the String/Buffer, or if the
|
||||
* requested length is zero, return a zero-length String/Buffer
|
||||
*/
|
||||
if ((Operand[1]->Integer.Value < ObjDesc1->String.Length) &&
|
||||
(Operand[2]->Integer.Value > 0))
|
||||
{
|
||||
/* Truncate request if larger than the actual String/Buffer */
|
||||
|
||||
if (((UINT32) Operand[1]->Integer.Value + (UINT32) Operand[2]->Integer.Value) >
|
||||
ObjDesc1->String.Length)
|
||||
{
|
||||
Temp = ObjDesc1->String.Length - (UINT32) Operand[1]->Integer.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
Temp = (UINT32) Operand[2]->Integer.Value;
|
||||
}
|
||||
|
||||
/* Allocate a new buffer for the String/Buffer */
|
||||
|
||||
RetDesc->String.Pointer = ACPI_MEM_CALLOCATE (Temp + 1);
|
||||
if (!RetDesc->String.Pointer)
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Copy the portion requested */
|
||||
|
||||
MEMCPY (RetDesc->String.Pointer,
|
||||
ObjDesc1->String.Pointer + (UINT32) Operand[1]->Integer.Value,
|
||||
Temp);
|
||||
|
||||
/* Set the length of the new String/Buffer */
|
||||
|
||||
RetDesc->String.Length = Temp;
|
||||
}
|
||||
|
||||
Status = AcpiExStore (RetDesc, Operand[3], WalkState);
|
||||
break;
|
||||
|
||||
|
||||
@ -314,7 +361,7 @@ AcpiExTriadic (
|
||||
|
||||
/* Set the return object and exit */
|
||||
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -323,9 +370,7 @@ AcpiExTriadic (
|
||||
*
|
||||
* FUNCTION: AcpiExHexadic
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* WalkState - Current walk state
|
||||
* ReturnDesc - Where to store the return object
|
||||
* PARAMETERS: WalkState - Current walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -335,9 +380,7 @@ AcpiExTriadic (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExHexadic (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
@ -357,7 +400,7 @@ AcpiExHexadic (
|
||||
|
||||
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
case AML_MATCH_OP:
|
||||
@ -416,9 +459,8 @@ AcpiExHexadic (
|
||||
* "continue" (proceed to next iteration of enclosing
|
||||
* "for" loop) signifies a non-match.
|
||||
*/
|
||||
switch (Op1Desc->Integer.Value)
|
||||
switch ((NATIVE_UINT) Op1Desc->Integer.Value)
|
||||
{
|
||||
|
||||
case MATCH_MTR: /* always true */
|
||||
|
||||
break;
|
||||
@ -480,9 +522,8 @@ AcpiExHexadic (
|
||||
}
|
||||
|
||||
|
||||
switch(Op2Desc->Integer.Value)
|
||||
switch ((NATIVE_UINT) Op2Desc->Integer.Value)
|
||||
{
|
||||
|
||||
case MATCH_MTR:
|
||||
|
||||
break;
|
||||
@ -581,6 +622,6 @@ AcpiExHexadic (
|
||||
|
||||
/* Set the return object and exit */
|
||||
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exmonad - ACPI AML execution for monadic (1 operand) operators
|
||||
* $Revision: 110 $
|
||||
* $Revision: 113 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -216,7 +216,7 @@ AcpiExGetObjectReference (
|
||||
*
|
||||
* FUNCTION: AcpiExMonadic1
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* PARAMETERS: WalkState - Current state (contains AML opcode)
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -227,7 +227,6 @@ AcpiExGetObjectReference (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExMonadic1 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
@ -239,60 +238,45 @@ AcpiExMonadic1 (
|
||||
|
||||
/* Examine the opcode */
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
/* DefRelease := ReleaseOp MutexObject */
|
||||
|
||||
case AML_RELEASE_OP:
|
||||
case AML_RELEASE_OP: /* Release (MutexObject) */
|
||||
|
||||
Status = AcpiExReleaseMutex (ObjDesc, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
/* DefReset := ResetOp AcpiEventObject */
|
||||
|
||||
case AML_RESET_OP:
|
||||
case AML_RESET_OP: /* Reset (EventObject) */
|
||||
|
||||
Status = AcpiExSystemResetEvent (ObjDesc);
|
||||
break;
|
||||
|
||||
|
||||
/* DefSignal := SignalOp AcpiEventObject */
|
||||
|
||||
case AML_SIGNAL_OP:
|
||||
case AML_SIGNAL_OP: /* Signal (EventObject) */
|
||||
|
||||
Status = AcpiExSystemSignalEvent (ObjDesc);
|
||||
break;
|
||||
|
||||
|
||||
/* DefSleep := SleepOp MsecTime */
|
||||
|
||||
case AML_SLEEP_OP:
|
||||
case AML_SLEEP_OP: /* Sleep (MsecTime) */
|
||||
|
||||
AcpiExSystemDoSuspend ((UINT32) ObjDesc->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* DefStall := StallOp UsecTime */
|
||||
|
||||
case AML_STALL_OP:
|
||||
case AML_STALL_OP: /* Stall (UsecTime) */
|
||||
|
||||
AcpiExSystemDoStall ((UINT32) ObjDesc->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
/* Unknown opcode */
|
||||
|
||||
default:
|
||||
default: /* Unknown opcode */
|
||||
|
||||
REPORT_ERROR (("AcpiExMonadic1: Unknown monadic opcode %X\n",
|
||||
Opcode));
|
||||
WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
break;
|
||||
|
||||
} /* switch */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Always delete the operand */
|
||||
@ -307,7 +291,7 @@ AcpiExMonadic1 (
|
||||
*
|
||||
* FUNCTION: AcpiExMonadic2R
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* PARAMETERS: WalkState - Current state (contains AML opcode)
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -318,15 +302,13 @@ AcpiExMonadic1 (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExMonadic2R (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *RetDesc = NULL;
|
||||
ACPI_OPERAND_OBJECT *RetDesc2 = NULL;
|
||||
UINT32 ResVal;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT32 Temp32;
|
||||
UINT32 i;
|
||||
UINT32 j;
|
||||
ACPI_INTEGER Digit;
|
||||
@ -339,7 +321,7 @@ AcpiExMonadic2R (
|
||||
|
||||
/* Create a return object of type NUMBER for most opcodes */
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
case AML_BIT_NOT_OP:
|
||||
case AML_FIND_SET_LEFT_BIT_OP:
|
||||
@ -359,19 +341,17 @@ AcpiExMonadic2R (
|
||||
}
|
||||
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
/* DefNot := NotOp Operand Result */
|
||||
|
||||
case AML_BIT_NOT_OP:
|
||||
case AML_BIT_NOT_OP: /* Not (Operand, Result) */
|
||||
|
||||
RetDesc->Integer.Value = ~ObjDesc->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
/* DefFindSetLeftBit := FindSetLeftBitOp Operand Result */
|
||||
case AML_FIND_SET_LEFT_BIT_OP: /* FindSetLeftBit (Operand, Result) */
|
||||
|
||||
case AML_FIND_SET_LEFT_BIT_OP:
|
||||
|
||||
RetDesc->Integer.Value = ObjDesc->Integer.Value;
|
||||
|
||||
@ -379,39 +359,36 @@ AcpiExMonadic2R (
|
||||
* Acpi specification describes Integer type as a little
|
||||
* endian unsigned value, so this boundary condition is valid.
|
||||
*/
|
||||
for (ResVal = 0; RetDesc->Integer.Value && ResVal < ACPI_INTEGER_BIT_SIZE; ++ResVal)
|
||||
for (Temp32 = 0; RetDesc->Integer.Value && Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32)
|
||||
{
|
||||
RetDesc->Integer.Value >>= 1;
|
||||
}
|
||||
|
||||
RetDesc->Integer.Value = ResVal;
|
||||
RetDesc->Integer.Value = Temp32;
|
||||
break;
|
||||
|
||||
|
||||
/* DefFindSetRightBit := FindSetRightBitOp Operand Result */
|
||||
case AML_FIND_SET_RIGHT_BIT_OP: /* FindSetRightBit (Operand, Result) */
|
||||
|
||||
case AML_FIND_SET_RIGHT_BIT_OP:
|
||||
|
||||
RetDesc->Integer.Value = ObjDesc->Integer.Value;
|
||||
|
||||
/*
|
||||
* Acpi specification describes Integer type as a little
|
||||
* The Acpi specification describes Integer type as a little
|
||||
* endian unsigned value, so this boundary condition is valid.
|
||||
*/
|
||||
for (ResVal = 0; RetDesc->Integer.Value && ResVal < ACPI_INTEGER_BIT_SIZE; ++ResVal)
|
||||
for (Temp32 = 0; RetDesc->Integer.Value && Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32)
|
||||
{
|
||||
RetDesc->Integer.Value <<= 1;
|
||||
}
|
||||
|
||||
/* Since returns must be 1-based, subtract from 33 (65) */
|
||||
|
||||
RetDesc->Integer.Value = ResVal == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - ResVal;
|
||||
RetDesc->Integer.Value = Temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - Temp32;
|
||||
break;
|
||||
|
||||
|
||||
/* DefFromBDC := FromBCDOp BCDValue Result */
|
||||
|
||||
case AML_FROM_BCD_OP:
|
||||
case AML_FROM_BCD_OP: /* FromBcd (BCDValue, Result) */
|
||||
|
||||
/*
|
||||
* The 64-bit ACPI integer can hold 16 4-bit BCD integers
|
||||
@ -448,10 +425,7 @@ AcpiExMonadic2R (
|
||||
break;
|
||||
|
||||
|
||||
/* DefToBDC := ToBCDOp Operand Result */
|
||||
|
||||
case AML_TO_BCD_OP:
|
||||
|
||||
case AML_TO_BCD_OP: /* ToBcd (Operand, Result) */
|
||||
|
||||
if (ObjDesc->Integer.Value > ACPI_MAX_BCD_VALUE)
|
||||
{
|
||||
@ -466,25 +440,24 @@ AcpiExMonadic2R (
|
||||
{
|
||||
/* Divide by nth factor of 10 */
|
||||
|
||||
Temp32 = 0;
|
||||
Digit = ObjDesc->Integer.Value;
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
Digit = ACPI_DIVIDE (Digit, 10);
|
||||
AcpiUtShortDivide (&Digit, 10, &Digit, &Temp32);
|
||||
}
|
||||
|
||||
/* Create the BCD digit */
|
||||
/* Create the BCD digit from the remainder above */
|
||||
|
||||
if (Digit > 0)
|
||||
{
|
||||
RetDesc->Integer.Value += (ACPI_MODULO (Digit, 10) << (i * 4));
|
||||
RetDesc->Integer.Value += (Temp32 << (i * 4));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
/* DefCondRefOf := CondRefOfOp SourceObject Result */
|
||||
|
||||
case AML_COND_REF_OF_OP:
|
||||
case AML_COND_REF_OF_OP: /* CondRefOf (SourceObject, Result) */
|
||||
|
||||
/*
|
||||
* This op is a little strange because the internal return value is
|
||||
@ -524,17 +497,14 @@ AcpiExMonadic2R (
|
||||
break;
|
||||
|
||||
|
||||
case AML_STORE_OP:
|
||||
case AML_STORE_OP: /* Store (Source, Target) */
|
||||
|
||||
/*
|
||||
* A store operand is typically a number, string, buffer or lvalue
|
||||
* TBD: [Unhandled] What about a store to a package?
|
||||
*/
|
||||
|
||||
/*
|
||||
* Do the store, and be careful about deleting the source object,
|
||||
* Be careful about deleting the source object,
|
||||
* since the object itself may have been stored.
|
||||
*/
|
||||
Temp32 = ObjDesc->Common.ReferenceCount;
|
||||
Status = AcpiExStore (ObjDesc, ResDesc, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -544,73 +514,78 @@ AcpiExMonadic2R (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
#if 0
|
||||
if ((ObjDesc->Common.ReferenceCount > Temp32) &&
|
||||
(!AcpiDsIsResultUsed (WalkState->Op, WalkState)))
|
||||
{
|
||||
ObjDesc->Common.ReferenceCount++;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Normally, we would remove a reference on the ObjDesc 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.
|
||||
*/
|
||||
*ReturnDesc = ObjDesc;
|
||||
WalkState->ResultObj = ObjDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
break;
|
||||
|
||||
|
||||
case AML_DEBUG_OP:
|
||||
|
||||
/* Reference, returning an Reference */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "DebugOp should never get here!\n"));
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
break;
|
||||
|
||||
|
||||
/*
|
||||
* ACPI 2.0 Opcodes
|
||||
*/
|
||||
case AML_TO_DECSTRING_OP:
|
||||
case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToString (ObjDesc, &RetDesc, 10, ACPI_UINT32_MAX, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_TO_HEXSTRING_OP:
|
||||
case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToString (ObjDesc, &RetDesc, 16, ACPI_UINT32_MAX, WalkState);
|
||||
break;
|
||||
|
||||
case AML_TO_BUFFER_OP:
|
||||
|
||||
case AML_TO_BUFFER_OP: /* ToBuffer (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToBuffer (ObjDesc, &RetDesc, WalkState);
|
||||
break;
|
||||
|
||||
case AML_TO_INTEGER_OP:
|
||||
|
||||
case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToInteger (ObjDesc, &RetDesc, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
/*
|
||||
* These are obsolete opcodes
|
||||
* These are two obsolete opcodes
|
||||
*/
|
||||
case AML_SHIFT_LEFT_BIT_OP: /* ShiftLeftBit (Source, BitNum) */
|
||||
case AML_SHIFT_RIGHT_BIT_OP: /* ShiftRightBit (Source, BitNum) */
|
||||
|
||||
/* DefShiftLeftBit := ShiftLeftBitOp Source BitNum */
|
||||
/* DefShiftRightBit := ShiftRightBitOp Source BitNum */
|
||||
|
||||
case AML_SHIFT_LEFT_BIT_OP:
|
||||
case AML_SHIFT_RIGHT_BIT_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s is unimplemented\n",
|
||||
AcpiPsGetOpcodeName (Opcode)));
|
||||
AcpiPsGetOpcodeName (WalkState->Opcode)));
|
||||
Status = AE_SUPPORT;
|
||||
goto Cleanup;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
default: /* Unknown opcode */
|
||||
|
||||
REPORT_ERROR (("AcpiExMonadic2R: Unknown monadic opcode %X\n",
|
||||
Opcode));
|
||||
WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Store the return value computed above into the result object
|
||||
*/
|
||||
Status = AcpiExStore (RetDesc, ResDesc, WalkState);
|
||||
|
||||
|
||||
@ -633,7 +608,7 @@ AcpiExMonadic2R (
|
||||
|
||||
/* Set the return object and exit */
|
||||
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -642,7 +617,7 @@ AcpiExMonadic2R (
|
||||
*
|
||||
* FUNCTION: AcpiExMonadic2
|
||||
*
|
||||
* PARAMETERS: Opcode - The opcode to be executed
|
||||
* PARAMETERS: WalkState - Current state (contains AML opcode)
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -654,9 +629,7 @@ AcpiExMonadic2R (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExMonadic2 (
|
||||
UINT16 Opcode,
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_OPERAND_OBJECT **ReturnDesc)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
|
||||
ACPI_OPERAND_OBJECT *TmpDesc;
|
||||
@ -673,12 +646,10 @@ AcpiExMonadic2 (
|
||||
|
||||
/* Get the operand and decode the opcode */
|
||||
|
||||
switch (Opcode)
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
/* DefLNot := LNotOp Operand */
|
||||
|
||||
case AML_LNOT_OP:
|
||||
case AML_LNOT_OP: /* LNot (Operand) */
|
||||
|
||||
RetDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!RetDesc)
|
||||
@ -691,11 +662,8 @@ AcpiExMonadic2 (
|
||||
break;
|
||||
|
||||
|
||||
/* DefDecrement := DecrementOp Target */
|
||||
/* DefIncrement := IncrementOp Target */
|
||||
|
||||
case AML_DECREMENT_OP:
|
||||
case AML_INCREMENT_OP:
|
||||
case AML_DECREMENT_OP: /* Decrement (Operand) */
|
||||
case AML_INCREMENT_OP: /* Increment (Operand) */
|
||||
|
||||
/*
|
||||
* Since we are expecting an Reference on the top of the stack, it
|
||||
@ -730,20 +698,20 @@ AcpiExMonadic2 (
|
||||
|
||||
/*
|
||||
* Convert the RetDesc Reference to a Number
|
||||
* (This deletes the original RetDesc)
|
||||
* (This deletes the original RetDesc object)
|
||||
*/
|
||||
Status = AcpiExResolveOperands (AML_LNOT_OP, &RetDesc, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s: bad operand(s) %s\n",
|
||||
AcpiPsGetOpcodeName (Opcode), AcpiFormatException(Status)));
|
||||
AcpiPsGetOpcodeName (WalkState->Opcode), AcpiFormatException(Status)));
|
||||
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Do the actual increment or decrement */
|
||||
|
||||
if (AML_INCREMENT_OP == Opcode)
|
||||
if (AML_INCREMENT_OP == WalkState->Opcode)
|
||||
{
|
||||
RetDesc->Integer.Value++;
|
||||
}
|
||||
@ -763,9 +731,7 @@ AcpiExMonadic2 (
|
||||
break;
|
||||
|
||||
|
||||
/* DefObjectType := ObjectTypeOp SourceObject */
|
||||
|
||||
case AML_TYPE_OP:
|
||||
case AML_TYPE_OP: /* ObjectType (SourceObject) */
|
||||
|
||||
if (INTERNAL_TYPE_REFERENCE == ObjDesc->Common.Type)
|
||||
{
|
||||
@ -778,6 +744,7 @@ AcpiExMonadic2 (
|
||||
case AML_ZERO_OP:
|
||||
case AML_ONE_OP:
|
||||
case AML_ONES_OP:
|
||||
case AML_REVISION_OP:
|
||||
|
||||
/* Constants are of type Number */
|
||||
|
||||
@ -787,7 +754,7 @@ AcpiExMonadic2 (
|
||||
|
||||
case AML_DEBUG_OP:
|
||||
|
||||
/* Per 1.0b spec, Debug object is of type DebugObject */
|
||||
/* Per 1.0b spec, Debug object is of type "DebugObject" */
|
||||
|
||||
Type = ACPI_TYPE_DEBUG_OBJECT;
|
||||
break;
|
||||
@ -861,9 +828,7 @@ AcpiExMonadic2 (
|
||||
break;
|
||||
|
||||
|
||||
/* DefSizeOf := SizeOfOp SourceObject */
|
||||
|
||||
case AML_SIZE_OF_OP:
|
||||
case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */
|
||||
|
||||
if (VALID_DESCRIPTOR_TYPE (ObjDesc, ACPI_DESC_TYPE_NAMED))
|
||||
{
|
||||
@ -926,9 +891,7 @@ AcpiExMonadic2 (
|
||||
break;
|
||||
|
||||
|
||||
/* DefRefOf := RefOfOp SourceObject */
|
||||
|
||||
case AML_REF_OF_OP:
|
||||
case AML_REF_OF_OP: /* RefOf (SourceObject) */
|
||||
|
||||
Status = AcpiExGetObjectReference (ObjDesc, &RetDesc, WalkState);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -938,10 +901,7 @@ AcpiExMonadic2 (
|
||||
break;
|
||||
|
||||
|
||||
/* DefDerefOf := DerefOfOp ObjReference */
|
||||
|
||||
case AML_DEREF_OF_OP:
|
||||
|
||||
case AML_DEREF_OF_OP: /* DerefOf (ObjReference) */
|
||||
|
||||
/* Check for a method local or argument */
|
||||
|
||||
@ -1095,7 +1055,7 @@ AcpiExMonadic2 (
|
||||
default:
|
||||
|
||||
REPORT_ERROR (("AcpiExMonadic2: Unknown monadic opcode %X\n",
|
||||
Opcode));
|
||||
WalkState->Opcode));
|
||||
Status = AE_AML_BAD_OPCODE;
|
||||
goto Cleanup;
|
||||
}
|
||||
@ -1117,7 +1077,7 @@ AcpiExMonadic2 (
|
||||
RetDesc = NULL;
|
||||
}
|
||||
|
||||
*ReturnDesc = RetDesc;
|
||||
WalkState->ResultObj = RetDesc;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exnames - interpreter/scanner name load/execute
|
||||
* $Revision: 82 $
|
||||
* $Revision: 83 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -185,7 +185,7 @@ AcpiExAllocateNameString (
|
||||
NameString = ACPI_MEM_ALLOCATE (SizeNeeded);
|
||||
if (!NameString)
|
||||
{
|
||||
REPORT_ERROR (("ExAllocateNameString: name allocation failure\n"));
|
||||
REPORT_ERROR (("ExAllocateNameString: Could not allocate size %d\n", SizeNeeded));
|
||||
return_PTR (NULL);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exregion - ACPI default OpRegion (address space) handlers
|
||||
* $Revision: 57 $
|
||||
* $Revision: 59 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
* Value - Pointer to in or out value
|
||||
* HandlerContext - Pointer to Handler's context
|
||||
* RegionContext - Pointer to context specific to the
|
||||
* accessed region
|
||||
* accessed region
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -222,7 +222,7 @@ AcpiExSystemMemorySpaceHandler (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* TBD: should these pointers go to 64-bit in all cases ? */
|
||||
/* Save the physical address and mapping size */
|
||||
|
||||
MemInfo->MappedPhysicalAddress = Address;
|
||||
MemInfo->MappedLength = SYSMEM_REGION_WINDOW_SIZE;
|
||||
@ -307,7 +307,7 @@ AcpiExSystemMemorySpaceHandler (
|
||||
* Value - Pointer to in or out value
|
||||
* HandlerContext - Pointer to Handler's context
|
||||
* RegionContext - Pointer to context specific to the
|
||||
* accessed region
|
||||
* accessed region
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -371,7 +371,7 @@ AcpiExSystemIoSpaceHandler (
|
||||
* Value - Pointer to in or out value
|
||||
* HandlerContext - Pointer to Handler's context
|
||||
* RegionContext - Pointer to context specific to the
|
||||
* accessed region
|
||||
* accessed region
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -441,3 +441,77 @@ AcpiExPciConfigSpaceHandler (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExCmosSpaceHandler
|
||||
*
|
||||
* PARAMETERS: Function - Read or Write operation
|
||||
* Address - Where in the space to read or write
|
||||
* BitWidth - Field width in bits (8, 16, or 32)
|
||||
* Value - Pointer to in or out value
|
||||
* HandlerContext - Pointer to Handler's context
|
||||
* RegionContext - Pointer to context specific to the
|
||||
* accessed region
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Handler for the CMOS address space (Op Region)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExCmosSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
void *RegionContext)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("ExCmosSpaceHandler");
|
||||
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExPciBarSpaceHandler
|
||||
*
|
||||
* PARAMETERS: Function - Read or Write operation
|
||||
* Address - Where in the space to read or write
|
||||
* BitWidth - Field width in bits (8, 16, or 32)
|
||||
* Value - Pointer to in or out value
|
||||
* HandlerContext - Pointer to Handler's context
|
||||
* RegionContext - Pointer to context specific to the
|
||||
* accessed region
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Handler for the PCI BarTarget address space (Op Region)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiExPciBarSpaceHandler (
|
||||
UINT32 Function,
|
||||
ACPI_PHYSICAL_ADDRESS Address,
|
||||
UINT32 BitWidth,
|
||||
UINT32 *Value,
|
||||
void *HandlerContext,
|
||||
void *RegionContext)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("ExPciBarSpaceHandler");
|
||||
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exresnte - AML Interpreter object resolution
|
||||
* $Revision: 39 $
|
||||
* $Revision: 41 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -214,8 +214,8 @@ AcpiExResolveNodeToValue (
|
||||
|
||||
if (ACPI_TYPE_PACKAGE != ValDesc->Common.Type)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a package, type %X\n",
|
||||
ValDesc->Common.Type));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Package, type %s\n",
|
||||
AcpiUtGetTypeName (ValDesc->Common.Type)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
@ -230,8 +230,8 @@ AcpiExResolveNodeToValue (
|
||||
|
||||
if (ACPI_TYPE_BUFFER != ValDesc->Common.Type)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a buffer, type %X\n",
|
||||
ValDesc->Common.Type));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Buffer, type %s\n",
|
||||
AcpiUtGetTypeName (ValDesc->Common.Type)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
@ -246,8 +246,8 @@ AcpiExResolveNodeToValue (
|
||||
|
||||
if (ACPI_TYPE_STRING != ValDesc->Common.Type)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a string, type %X\n",
|
||||
ValDesc->Common.Type));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a String, type %s\n",
|
||||
AcpiUtGetTypeName (ValDesc->Common.Type)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
@ -262,8 +262,8 @@ AcpiExResolveNodeToValue (
|
||||
|
||||
if (ACPI_TYPE_INTEGER != ValDesc->Common.Type)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Number, type %X\n",
|
||||
ValDesc->Common.Type));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Integer, type %s\n",
|
||||
AcpiUtGetTypeName (ValDesc->Common.Type)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
@ -339,6 +339,11 @@ AcpiExResolveNodeToValue (
|
||||
TempVal = ACPI_INTEGER_MAX;
|
||||
break;
|
||||
|
||||
case AML_REVISION_OP:
|
||||
|
||||
TempVal = ACPI_CA_VERSION;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported reference opcode %X\n",
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exresolv - AML Interpreter object resolution
|
||||
* $Revision: 97 $
|
||||
* $Revision: 99 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -398,31 +398,51 @@ AcpiExResolveObjectToValue (
|
||||
|
||||
|
||||
/*
|
||||
* TBD: [Restructure] These next three opcodes change the type of
|
||||
* the object, which is actually a no-no.
|
||||
* For constants, we must change the reference/constant object
|
||||
* to a real integer object
|
||||
*/
|
||||
case AML_ZERO_OP:
|
||||
|
||||
StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER;
|
||||
StackDesc->Integer.Value = 0;
|
||||
break;
|
||||
|
||||
|
||||
case AML_ONE_OP:
|
||||
|
||||
StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER;
|
||||
StackDesc->Integer.Value = 1;
|
||||
break;
|
||||
|
||||
|
||||
case AML_ONES_OP:
|
||||
case AML_REVISION_OP:
|
||||
|
||||
StackDesc->Common.Type = (UINT8) ACPI_TYPE_INTEGER;
|
||||
StackDesc->Integer.Value = ACPI_INTEGER_MAX;
|
||||
/* Create a new integer object */
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
AcpiExTruncateFor32bitTable (StackDesc, WalkState);
|
||||
switch (Opcode)
|
||||
{
|
||||
case AML_ZERO_OP:
|
||||
ObjDesc->Integer.Value = 0;
|
||||
break;
|
||||
|
||||
case AML_ONE_OP:
|
||||
ObjDesc->Integer.Value = 1;
|
||||
break;
|
||||
|
||||
case AML_ONES_OP:
|
||||
ObjDesc->Integer.Value = ACPI_INTEGER_MAX;
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
|
||||
AcpiExTruncateFor32bitTable (ObjDesc, WalkState);
|
||||
break;
|
||||
|
||||
case AML_REVISION_OP:
|
||||
ObjDesc->Integer.Value = ACPI_CA_VERSION;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove a reference from the original reference object
|
||||
* and put the new object in its place
|
||||
*/
|
||||
AcpiUtRemoveReference (StackDesc);
|
||||
*StackPtr = ObjDesc;
|
||||
break;
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exresop - AML Interpreter operand/object resolution
|
||||
* $Revision: 37 $
|
||||
* $Revision: 38 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -301,6 +301,7 @@ AcpiExResolveOperands (
|
||||
case AML_INDEX_OP:
|
||||
case AML_ARG_OP:
|
||||
case AML_LOCAL_OP:
|
||||
case AML_REVISION_OP:
|
||||
|
||||
DEBUG_ONLY_MEMBERS (ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"Reference Opcode: %s\n", OpInfo->Name)));
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exstore - AML Interpreter object store support
|
||||
* $Revision: 147 $
|
||||
* $Revision: 148 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -673,14 +673,14 @@ AcpiExStoreObjectToNode (
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"Storing %s (%p) directly into node (%p), no implicit conversion\n",
|
||||
AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc, Node));
|
||||
|
||||
/* No conversions for all other types. Just attach the source object */
|
||||
|
||||
Status = AcpiNsAttachObject (Node, SourceDesc, SourceDesc->Common.Type);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"Store %s into %s via Attach only\n",
|
||||
AcpiUtGetTypeName (SourceDesc->Common.Type),
|
||||
AcpiUtGetTypeName (SourceDesc->Common.Type)));
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exutils - interpreter/scanner utilities
|
||||
* $Revision: 84 $
|
||||
* $Revision: 85 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -364,17 +364,17 @@ AcpiExReleaseGlobalLock (
|
||||
*
|
||||
* FUNCTION: AcpiExDigitsNeeded
|
||||
*
|
||||
* PARAMETERS: val - Value to be represented
|
||||
* base - Base of representation
|
||||
* PARAMETERS: Value - Value to be represented
|
||||
* Base - Base of representation
|
||||
*
|
||||
* RETURN: the number of digits needed to represent val in base
|
||||
* RETURN: the number of digits needed to represent Value in Base
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
AcpiExDigitsNeeded (
|
||||
ACPI_INTEGER val,
|
||||
UINT32 base)
|
||||
ACPI_INTEGER Value,
|
||||
UINT32 Base)
|
||||
{
|
||||
UINT32 NumDigits = 0;
|
||||
|
||||
@ -382,7 +382,7 @@ AcpiExDigitsNeeded (
|
||||
FUNCTION_TRACE ("ExDigitsNeeded");
|
||||
|
||||
|
||||
if (base < 1)
|
||||
if (Base < 1)
|
||||
{
|
||||
REPORT_ERROR (("ExDigitsNeeded: Internal error - Invalid base\n"));
|
||||
}
|
||||
@ -390,9 +390,11 @@ AcpiExDigitsNeeded (
|
||||
else
|
||||
{
|
||||
/*
|
||||
* ACPI_INTEGER is unsigned, which is why we don't worry about the '-'
|
||||
* ACPI_INTEGER is unsigned, which is why we don't worry about a '-'
|
||||
*/
|
||||
for (NumDigits = 1; (val = ACPI_DIVIDE (val,base)); ++NumDigits)
|
||||
for (NumDigits = 1;
|
||||
(AcpiUtShortDivide (&Value, Base, &Value, NULL));
|
||||
++NumDigits)
|
||||
{ ; }
|
||||
}
|
||||
|
||||
@ -498,18 +500,19 @@ AcpiExUnsignedIntegerToString (
|
||||
{
|
||||
UINT32 Count;
|
||||
UINT32 DigitsNeeded;
|
||||
UINT32 Remainder;
|
||||
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
DigitsNeeded = AcpiExDigitsNeeded (Value, 10);
|
||||
OutString[DigitsNeeded] = '\0';
|
||||
OutString[DigitsNeeded] = 0;
|
||||
|
||||
for (Count = DigitsNeeded; Count > 0; Count--)
|
||||
{
|
||||
OutString[Count-1] = (NATIVE_CHAR) ('0' + (ACPI_MODULO (Value, 10)));
|
||||
Value = ACPI_DIVIDE (Value, 10);
|
||||
AcpiUtShortDivide (&Value, 10, &Value, &Remainder);
|
||||
OutString[Count-1] = (NATIVE_CHAR) ('0' + Remainder);
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: hwgpe - Low level GPE enable/disable/clear functions
|
||||
* $Revision: 32 $
|
||||
* $Revision: 34 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -168,6 +168,45 @@ AcpiHwEnableGpe (
|
||||
(InByte | BitMask), 8);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiHwEnableGpeForWakeup
|
||||
*
|
||||
* PARAMETERS: GpeNumber - The GPE
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Keep track of which GPEs the OS has requested not be
|
||||
* disabled when going to sleep.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiHwEnableGpeForWakeup (
|
||||
UINT32 GpeNumber)
|
||||
{
|
||||
UINT32 RegisterIndex;
|
||||
UINT32 BitMask;
|
||||
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
/*
|
||||
* Translate GPE number to index into global registers array.
|
||||
*/
|
||||
RegisterIndex = AcpiGbl_GpeValid[GpeNumber];
|
||||
|
||||
/*
|
||||
* Figure out the bit offset for this GPE within the target register.
|
||||
*/
|
||||
BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
|
||||
/*
|
||||
* Set the bit so we will not disable this when sleeping
|
||||
*/
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].WakeEnable |= BitMask;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@ -211,8 +250,49 @@ AcpiHwDisableGpe (
|
||||
AcpiOsReadPort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr, &InByte, 8);
|
||||
AcpiOsWritePort (AcpiGbl_GpeRegisters[RegisterIndex].EnableAddr,
|
||||
(InByte & ~BitMask), 8);
|
||||
|
||||
AcpiHwDisableGpeForWakeup(GpeNumber);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiHwDisableGpeForWakeup
|
||||
*
|
||||
* PARAMETERS: GpeNumber - The GPE
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Keep track of which GPEs the OS has requested not be
|
||||
* disabled when going to sleep.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiHwDisableGpeForWakeup (
|
||||
UINT32 GpeNumber)
|
||||
{
|
||||
UINT32 RegisterIndex;
|
||||
UINT32 BitMask;
|
||||
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
/*
|
||||
* Translate GPE number to index into global registers array.
|
||||
*/
|
||||
RegisterIndex = AcpiGbl_GpeValid[GpeNumber];
|
||||
|
||||
/*
|
||||
* Figure out the bit offset for this GPE within the target register.
|
||||
*/
|
||||
BitMask = AcpiGbl_DecodeTo8bit [MOD_8 (GpeNumber)];
|
||||
|
||||
/*
|
||||
* Clear the bit so we will disable this when sleeping
|
||||
*/
|
||||
AcpiGbl_GpeRegisters[RegisterIndex].WakeEnable &= ~BitMask;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@ -307,6 +387,14 @@ AcpiHwGetGpeStatus (
|
||||
(*EventStatus) |= ACPI_EVENT_FLAG_ENABLED;
|
||||
}
|
||||
|
||||
/*
|
||||
* Enabled for wake?:
|
||||
*/
|
||||
if (BitMask & AcpiGbl_GpeRegisters[RegisterIndex].WakeEnable)
|
||||
{
|
||||
(*EventStatus) |= ACPI_EVENT_FLAG_WAKE_ENABLED;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set?
|
||||
*/
|
||||
@ -317,3 +405,75 @@ AcpiHwGetGpeStatus (
|
||||
(*EventStatus) |= ACPI_EVENT_FLAG_SET;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiHwDisableNonWakeupGpes
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Disable all non-wakeup GPEs
|
||||
* Call with interrupts disabled. The interrupt handler also
|
||||
* modifies AcpiGbl_GpeRegisters[i].Enable, so it should not be
|
||||
* given the chance to run until after non-wake GPEs are
|
||||
* re-enabled.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiHwDisableNonWakeupGpes (
|
||||
void)
|
||||
{
|
||||
UINT32 i;
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
for (i = 0; i < AcpiGbl_GpeRegisterCount; i++)
|
||||
{
|
||||
/*
|
||||
* Read the enabled status of all GPEs. We
|
||||
* will be using it to restore all the GPEs later.
|
||||
*/
|
||||
AcpiOsReadPort (AcpiGbl_GpeRegisters[i].EnableAddr,
|
||||
&AcpiGbl_GpeRegisters[i].Enable, 8);
|
||||
|
||||
/*
|
||||
* Disable all GPEs but wakeup GPEs.
|
||||
*/
|
||||
AcpiOsWritePort(AcpiGbl_GpeRegisters[i].EnableAddr,
|
||||
AcpiGbl_GpeRegisters[i].WakeEnable, 8);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiHwEnableNonWakeupGpes
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Enable all non-wakeup GPEs we previously enabled.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiHwEnableNonWakeupGpes (
|
||||
void)
|
||||
{
|
||||
UINT32 i;
|
||||
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
for (i = 0; i < AcpiGbl_GpeRegisterCount; i++)
|
||||
{
|
||||
/*
|
||||
* We previously stored the enabled status of all GPEs.
|
||||
* Blast them back in.
|
||||
*/
|
||||
AcpiOsWritePort(AcpiGbl_GpeRegisters[i].EnableAddr,
|
||||
AcpiGbl_GpeRegisters[i].Enable, 8);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface
|
||||
* $Revision: 21 $
|
||||
* $Revision: 22 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -270,7 +270,7 @@ AcpiEnterSleepState (
|
||||
|
||||
disable ();
|
||||
|
||||
/* TODO: disable all non-wake GPEs here */
|
||||
AcpiHwDisableNonWakeupGpes();
|
||||
|
||||
PM1AControl = (UINT16) AcpiHwRegisterRead (ACPI_MTX_LOCK, PM1_CONTROL);
|
||||
|
||||
@ -324,6 +324,8 @@ AcpiEnterSleepState (
|
||||
}
|
||||
while (!AcpiHwRegisterBitAccess (ACPI_READ, ACPI_MTX_LOCK, WAK_STS));
|
||||
|
||||
AcpiHwEnableNonWakeupGpes();
|
||||
|
||||
enable ();
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
@ -365,7 +367,7 @@ AcpiLeaveSleepState (
|
||||
|
||||
/* _WAK returns stuff - do we want to look at it? */
|
||||
|
||||
/* Re-enable GPEs */
|
||||
AcpiHwEnableNonWakeupGpes();
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: hwtimer.c - ACPI Power Management Timer Interface
|
||||
* $Revision: 12 $
|
||||
* $Revision: 14 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -138,20 +138,9 @@ ACPI_STATUS
|
||||
AcpiGetTimerResolution (
|
||||
UINT32 *Resolution)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiGetTimerResolution");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (!Resolution)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
@ -187,20 +176,9 @@ ACPI_STATUS
|
||||
AcpiGetTimer (
|
||||
UINT32 *Ticks)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiGetTimer");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (!Ticks)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nsalloc - Namespace allocation and deletion utilities
|
||||
* $Revision: 55 $
|
||||
* $Revision: 57 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
|
||||
ACPI_NAMESPACE_NODE *
|
||||
AcpiNsCreateNode (
|
||||
UINT32 AcpiName)
|
||||
UINT32 Name)
|
||||
{
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
|
||||
@ -157,7 +157,7 @@ AcpiNsCreateNode (
|
||||
ACPI_MEM_TRACKING (AcpiGbl_MemoryLists[ACPI_MEM_LIST_NSNODE].TotalAllocated++);
|
||||
|
||||
Node->DataType = ACPI_DESC_TYPE_NAMED;
|
||||
Node->Name = AcpiName;
|
||||
Node->Name = Name;
|
||||
Node->ReferenceCount = 1;
|
||||
|
||||
return_PTR (Node);
|
||||
@ -461,9 +461,9 @@ ACPI_STATUS
|
||||
AcpiNsDeleteNamespaceSubtree (
|
||||
ACPI_NAMESPACE_NODE *ParentNode)
|
||||
{
|
||||
ACPI_NAMESPACE_NODE *ChildNode;
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
UINT32 Level;
|
||||
ACPI_NAMESPACE_NODE *ChildNode = NULL;
|
||||
UINT32 Level = 1;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("NsDeleteNamespaceSubtree");
|
||||
@ -474,10 +474,6 @@ AcpiNsDeleteNamespaceSubtree (
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
ChildNode = 0;
|
||||
Level = 1;
|
||||
|
||||
/*
|
||||
* Traverse the tree of objects until we bubble back up
|
||||
* to where we started.
|
||||
@ -493,8 +489,8 @@ AcpiNsDeleteNamespaceSubtree (
|
||||
if (ChildNode)
|
||||
{
|
||||
/*
|
||||
* Found an object - delete the object within
|
||||
* the Value field
|
||||
* Found an object - detach and delete any attached
|
||||
* object.
|
||||
*/
|
||||
ObjDesc = AcpiNsGetAttachedObject (ChildNode);
|
||||
if (ObjDesc)
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsdump - table dumping routines for debug
|
||||
* $Revision: 99 $
|
||||
* $Revision: 100 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -335,8 +335,8 @@ AcpiNsDumpOneObject (
|
||||
/* Name is a Method and its AML offset/length are set */
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " M:%p-%X\n",
|
||||
((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Method.Pcode,
|
||||
((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Method.PcodeLength));
|
||||
((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Method.AmlStart,
|
||||
((ACPI_OPERAND_OBJECT *) ThisNode->Object)->Method.AmlLength));
|
||||
|
||||
break;
|
||||
|
||||
@ -462,7 +462,7 @@ AcpiNsDumpOneObject (
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
Value = (UINT8 *) ObjDesc->Method.Pcode;
|
||||
Value = (UINT8 *) ObjDesc->Method.AmlStart;
|
||||
break;
|
||||
|
||||
case INTERNAL_TYPE_REGION_FIELD:
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nseval - Object evaluation interfaces -- includes control
|
||||
* method lookup and execution.
|
||||
* $Revision: 97 $
|
||||
* $Revision: 99 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -488,17 +488,18 @@ AcpiNsExecuteControlMethod (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No attached method object\n"));
|
||||
|
||||
AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
return_ACPI_STATUS (AE_ERROR);
|
||||
return_ACPI_STATUS (AE_NULL_OBJECT);
|
||||
}
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Control method at Offset %x Length %lx]\n",
|
||||
ObjDesc->Method.Pcode + 1, ObjDesc->Method.PcodeLength - 1));
|
||||
ObjDesc->Method.AmlStart + 1, ObjDesc->Method.AmlLength - 1));
|
||||
|
||||
DUMP_PATHNAME (MethodNode, "NsExecuteControlMethod: Executing",
|
||||
ACPI_LV_NAMES, _COMPONENT);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "At offset %8XH\n", ObjDesc->Method.Pcode + 1));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "At offset %8XH\n",
|
||||
ObjDesc->Method.AmlStart + 1));
|
||||
|
||||
|
||||
/*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsload - namespace loading/expanding/contracting procedures
|
||||
* $Revision: 43 $
|
||||
* $Revision: 47 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -203,36 +203,14 @@ AcpiNsOneCompleteParse (
|
||||
UINT32 PassNumber,
|
||||
ACPI_TABLE_DESC *TableDesc)
|
||||
{
|
||||
ACPI_PARSE_DOWNWARDS DescendingCallback;
|
||||
ACPI_PARSE_UPWARDS AscendingCallback;
|
||||
ACPI_PARSE_OBJECT *ParseRoot;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("NsOneCompleteParse");
|
||||
|
||||
|
||||
switch (PassNumber)
|
||||
{
|
||||
case 1:
|
||||
DescendingCallback = AcpiDsLoad1BeginOp;
|
||||
AscendingCallback = AcpiDsLoad1EndOp;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
DescendingCallback = AcpiDsLoad2BeginOp;
|
||||
AscendingCallback = AcpiDsLoad2EndOp;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
DescendingCallback = AcpiDsExecBeginOp;
|
||||
AscendingCallback = AcpiDsExecEndOp;
|
||||
break;
|
||||
|
||||
default:
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Create and init a Root Node */
|
||||
|
||||
ParseRoot = AcpiPsAllocOp (AML_SCOPE_OP);
|
||||
@ -244,15 +222,28 @@ AcpiNsOneCompleteParse (
|
||||
((ACPI_PARSE2_OBJECT *) ParseRoot)->Name = ACPI_ROOT_NAME;
|
||||
|
||||
|
||||
/* Pass 1: Parse everything except control method bodies */
|
||||
/* Create and initialize a new walk state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
AcpiPsFreeOp (ParseRoot);
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, TableDesc->AmlStart,
|
||||
TableDesc->AmlLength, NULL, NULL, PassNumber);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parse the AML */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %d parse\n", PassNumber));
|
||||
|
||||
Status = AcpiPsParseAml (ParseRoot, TableDesc->AmlPointer,
|
||||
TableDesc->AmlLength,
|
||||
ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
|
||||
NULL, NULL, NULL, DescendingCallback,
|
||||
AscendingCallback);
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
|
||||
AcpiPsDeleteParseTree (ParseRoot);
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -323,8 +314,8 @@ AcpiNsParseTable (
|
||||
*
|
||||
* FUNCTION: AcpiNsLoadTable
|
||||
*
|
||||
* PARAMETERS: *PcodeAddr - Address of pcode block
|
||||
* PcodeLength - Length of pcode block
|
||||
* PARAMETERS: TableDesc - Descriptor for table to be loaded
|
||||
* Node - Owning NS node
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -343,13 +334,13 @@ AcpiNsLoadTable (
|
||||
FUNCTION_TRACE ("NsLoadTable");
|
||||
|
||||
|
||||
if (!TableDesc->AmlPointer)
|
||||
if (!TableDesc->AmlStart)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null AML pointer\n"));
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AML block at %p\n", TableDesc->AmlPointer));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AML block at %p\n", TableDesc->AmlStart));
|
||||
|
||||
|
||||
if (!TableDesc->AmlLength)
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsobject - Utilities for objects attached to namespace
|
||||
* table entries
|
||||
* $Revision: 63 $
|
||||
* $Revision: 65 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -223,7 +223,7 @@ AcpiNsAttachObject (
|
||||
}
|
||||
|
||||
/*
|
||||
* If the object is an Node with an attached object,
|
||||
* If the source object is a namespace Node with an attached object,
|
||||
* we will use that (attached) object
|
||||
*/
|
||||
else if (VALID_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_NAMED) &&
|
||||
@ -296,7 +296,7 @@ AcpiNsAttachObject (
|
||||
break;
|
||||
}
|
||||
|
||||
/* Otherwise, fall through and set the type to Integer */
|
||||
/* case AML_REVISION_OP: fall through and set the type to Integer */
|
||||
|
||||
case AML_ZERO_OP:
|
||||
case AML_ONES_OP:
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsxfname - Public interfaces to the ACPI subsystem
|
||||
* ACPI Namespace oriented interfaces
|
||||
* $Revision: 80 $
|
||||
* $Revision: 81 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -162,14 +162,6 @@ AcpiGetHandle (
|
||||
FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/* Parameter Validation */
|
||||
|
||||
if (!RetHandle || !Pathname)
|
||||
@ -242,14 +234,6 @@ AcpiGetName (
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/* Buffer pointer must be valid always */
|
||||
|
||||
if (!RetPathPtr || (NameType > ACPI_NAME_TYPE_MAX))
|
||||
@ -338,14 +322,6 @@ AcpiGetObjectInfo (
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (!Handle || !Info)
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsxfobj - Public interfaces to the ACPI subsystem
|
||||
* ACPI Object oriented interfaces
|
||||
* $Revision: 89 $
|
||||
* $Revision: 93 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -134,12 +134,10 @@
|
||||
*
|
||||
* PARAMETERS: Handle - Object handle (optional)
|
||||
* *Pathname - Object pathname (optional)
|
||||
* **Params - List of parameters to pass to
|
||||
* method, terminated by NULL.
|
||||
* Params itself may be NULL
|
||||
* if no parameters are being
|
||||
* passed.
|
||||
* *ReturnObject - Where to put method's return value (if
|
||||
* **ExternalParams - List of parameters to pass to method,
|
||||
* terminated by NULL. May be NULL
|
||||
* if no parameters are being passed.
|
||||
* *ReturnBuffer - Where to put method's return value (if
|
||||
* any). If NULL, no value is returned.
|
||||
*
|
||||
* RETURN: Status
|
||||
@ -154,83 +152,54 @@ ACPI_STATUS
|
||||
AcpiEvaluateObject (
|
||||
ACPI_HANDLE Handle,
|
||||
ACPI_STRING Pathname,
|
||||
ACPI_OBJECT_LIST *ParamObjects,
|
||||
ACPI_OBJECT_LIST *ExternalParams,
|
||||
ACPI_BUFFER *ReturnBuffer)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_OPERAND_OBJECT **ParamPtr = NULL;
|
||||
ACPI_OPERAND_OBJECT *ReturnObj = NULL;
|
||||
ACPI_OPERAND_OBJECT *ObjectPtr = NULL;
|
||||
ACPI_OPERAND_OBJECT **InternalParams = NULL;
|
||||
ACPI_OPERAND_OBJECT *InternalReturnObj = NULL;
|
||||
UINT32 BufferSpaceNeeded;
|
||||
UINT32 UserBufferLength;
|
||||
UINT32 Count;
|
||||
UINT32 i;
|
||||
UINT32 ParamLength;
|
||||
UINT32 ObjectLength;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiEvaluateObject");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* If there are parameters to be passed to the object
|
||||
* (which must be a control method), the external objects
|
||||
* must be converted to internal objects
|
||||
*/
|
||||
if (ParamObjects && ParamObjects->Count)
|
||||
if (ExternalParams && ExternalParams->Count)
|
||||
{
|
||||
/*
|
||||
* Allocate a new parameter block for the internal objects
|
||||
* Add 1 to count to allow for null terminated internal list
|
||||
*/
|
||||
Count = ParamObjects->Count;
|
||||
ParamLength = (Count + 1) * sizeof (void *);
|
||||
ObjectLength = Count * sizeof (ACPI_OPERAND_OBJECT);
|
||||
|
||||
ParamPtr = ACPI_MEM_CALLOCATE (ParamLength + /* Parameter List part */
|
||||
ObjectLength); /* Actual objects */
|
||||
if (!ParamPtr)
|
||||
InternalParams = ACPI_MEM_CALLOCATE ((ExternalParams->Count + 1) * sizeof (void *));
|
||||
if (!InternalParams)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
ObjectPtr = (ACPI_OPERAND_OBJECT *) ((UINT8 *) ParamPtr +
|
||||
ParamLength);
|
||||
|
||||
/*
|
||||
* Init the param array of pointers and NULL terminate
|
||||
* the list
|
||||
*/
|
||||
for (i = 0; i < Count; i++)
|
||||
{
|
||||
ParamPtr[i] = &ObjectPtr[i];
|
||||
AcpiUtInitStaticObject (&ObjectPtr[i]);
|
||||
}
|
||||
ParamPtr[Count] = NULL;
|
||||
|
||||
/*
|
||||
* Convert each external object in the list to an
|
||||
* internal object
|
||||
*/
|
||||
for (i = 0; i < Count; i++)
|
||||
for (i = 0; i < ExternalParams->Count; i++)
|
||||
{
|
||||
Status = AcpiUtCopyEobjectToIobject (&ParamObjects->Pointer[i],
|
||||
ParamPtr[i]);
|
||||
Status = AcpiUtCopyEobjectToIobject (&ExternalParams->Pointer[i],
|
||||
&InternalParams[i]);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiUtDeleteInternalObjectList (ParamPtr);
|
||||
AcpiUtDeleteInternalObjectList (InternalParams);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
InternalParams[ExternalParams->Count] = NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -246,7 +215,7 @@ AcpiEvaluateObject (
|
||||
/*
|
||||
* The path is fully qualified, just evaluate by name
|
||||
*/
|
||||
Status = AcpiNsEvaluateByName (Pathname, ParamPtr, &ReturnObj);
|
||||
Status = AcpiNsEvaluateByName (Pathname, InternalParams, &InternalReturnObj);
|
||||
}
|
||||
|
||||
else if (!Handle)
|
||||
@ -282,7 +251,7 @@ AcpiEvaluateObject (
|
||||
* The null pathname case means the handle is for
|
||||
* the actual object to be evaluated
|
||||
*/
|
||||
Status = AcpiNsEvaluateByHandle (Handle, ParamPtr, &ReturnObj);
|
||||
Status = AcpiNsEvaluateByHandle (Handle, InternalParams, &InternalReturnObj);
|
||||
}
|
||||
|
||||
else
|
||||
@ -290,8 +259,8 @@ AcpiEvaluateObject (
|
||||
/*
|
||||
* Both a Handle and a relative Pathname
|
||||
*/
|
||||
Status = AcpiNsEvaluateRelative (Handle, Pathname, ParamPtr,
|
||||
&ReturnObj);
|
||||
Status = AcpiNsEvaluateRelative (Handle, Pathname, InternalParams,
|
||||
&InternalReturnObj);
|
||||
}
|
||||
}
|
||||
|
||||
@ -306,9 +275,9 @@ AcpiEvaluateObject (
|
||||
UserBufferLength = ReturnBuffer->Length;
|
||||
ReturnBuffer->Length = 0;
|
||||
|
||||
if (ReturnObj)
|
||||
if (InternalReturnObj)
|
||||
{
|
||||
if (VALID_DESCRIPTOR_TYPE (ReturnObj, ACPI_DESC_TYPE_NAMED))
|
||||
if (VALID_DESCRIPTOR_TYPE (InternalReturnObj, ACPI_DESC_TYPE_NAMED))
|
||||
{
|
||||
/*
|
||||
* If we got an Node as a return object,
|
||||
@ -322,7 +291,7 @@ AcpiEvaluateObject (
|
||||
* types at a later date if necessary.
|
||||
*/
|
||||
Status = AE_TYPE;
|
||||
ReturnObj = NULL; /* No need to delete an Node */
|
||||
InternalReturnObj = NULL; /* No need to delete an Node */
|
||||
}
|
||||
|
||||
if (ACPI_SUCCESS (Status))
|
||||
@ -331,7 +300,7 @@ AcpiEvaluateObject (
|
||||
* Find out how large a buffer is needed
|
||||
* to contain the returned object
|
||||
*/
|
||||
Status = AcpiUtGetObjectSize (ReturnObj,
|
||||
Status = AcpiUtGetObjectSize (InternalReturnObj,
|
||||
&BufferSpaceNeeded);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
@ -359,7 +328,7 @@ AcpiEvaluateObject (
|
||||
/*
|
||||
* We have enough space for the object, build it
|
||||
*/
|
||||
Status = AcpiUtCopyIobjectToEobject (ReturnObj,
|
||||
Status = AcpiUtCopyIobjectToEobject (InternalReturnObj,
|
||||
ReturnBuffer);
|
||||
ReturnBuffer->Length = BufferSpaceNeeded;
|
||||
}
|
||||
@ -371,23 +340,23 @@ AcpiEvaluateObject (
|
||||
|
||||
/* Delete the return and parameter objects */
|
||||
|
||||
if (ReturnObj)
|
||||
if (InternalReturnObj)
|
||||
{
|
||||
/*
|
||||
* Delete the internal return object. (Or at least
|
||||
* decrement the reference count by one)
|
||||
*/
|
||||
AcpiUtRemoveReference (ReturnObj);
|
||||
AcpiUtRemoveReference (InternalReturnObj);
|
||||
}
|
||||
|
||||
/*
|
||||
* Free the input parameter list (if we created one),
|
||||
*/
|
||||
if (ParamPtr)
|
||||
if (InternalParams)
|
||||
{
|
||||
/* Free the allocated parameter block */
|
||||
|
||||
AcpiUtDeleteInternalObjectList (ParamPtr);
|
||||
AcpiUtDeleteInternalObjectList (InternalParams);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -425,14 +394,6 @@ AcpiGetNextObject (
|
||||
ACPI_NAMESPACE_NODE *ChildNode = NULL;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (Type > ACPI_TYPE_MAX)
|
||||
@ -513,17 +474,8 @@ AcpiGetType (
|
||||
ACPI_OBJECT_TYPE *RetType)
|
||||
{
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/* Parameter Validation */
|
||||
|
||||
if (!RetType)
|
||||
@ -583,14 +535,6 @@ AcpiGetParent (
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (Status);
|
||||
}
|
||||
|
||||
if (!RetHandle)
|
||||
{
|
||||
return (AE_BAD_PARAMETER);
|
||||
@ -681,14 +625,6 @@ AcpiWalkNamespace (
|
||||
FUNCTION_TRACE ("AcpiWalkNamespace");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if ((Type > ACPI_TYPE_MAX) ||
|
||||
@ -705,11 +641,9 @@ AcpiWalkNamespace (
|
||||
* must be allowed to make Acpi calls itself.
|
||||
*/
|
||||
AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
Status = AcpiNsWalkNamespace ((ACPI_OBJECT_TYPE8) Type,
|
||||
StartObject, MaxDepth,
|
||||
NS_WALK_UNLOCK,
|
||||
UserFunction, Context,
|
||||
ReturnValue);
|
||||
Status = AcpiNsWalkNamespace ((ACPI_OBJECT_TYPE8) Type, StartObject,
|
||||
MaxDepth, NS_WALK_UNLOCK, UserFunction, Context,
|
||||
ReturnValue);
|
||||
|
||||
AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
|
||||
@ -837,14 +771,6 @@ AcpiGetDevices (
|
||||
FUNCTION_TRACE ("AcpiGetDevices");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (!UserFunction)
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psfind - Parse tree search routine
|
||||
* $Revision: 28 $
|
||||
* $Revision: 29 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -197,11 +197,10 @@ AcpiPsFindName (
|
||||
/* search scope level for matching name segment */
|
||||
|
||||
Op = AcpiPsGetChild (Scope);
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
|
||||
while (Op)
|
||||
{
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
if (OpInfo->Flags & AML_FIELD)
|
||||
{
|
||||
/* Field, search named fields */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psopcode - Parser opcode information table
|
||||
* $Revision: 40 $
|
||||
* Module Name: psopcode - Parser/Interpreter opcode information table
|
||||
* $Revision: 43 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -158,20 +158,69 @@
|
||||
* into a 32-bit number and stored in the master opcode table at the end of this file.
|
||||
*/
|
||||
|
||||
#define ARGP_ZERO_OP ARG_NONE
|
||||
#define ARGP_ONE_OP ARG_NONE
|
||||
|
||||
#define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA)
|
||||
#define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_ALIAS_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_NAME)
|
||||
#define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ)
|
||||
#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)
|
||||
#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA)
|
||||
#define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA)
|
||||
#define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST)
|
||||
#define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA)
|
||||
#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
|
||||
#define ARGP_ARG0 ARG_NONE
|
||||
#define ARGP_ARG1 ARG_NONE
|
||||
#define ARGP_ARG2 ARG_NONE
|
||||
#define ARGP_ARG3 ARG_NONE
|
||||
#define ARGP_ARG4 ARG_NONE
|
||||
#define ARGP_ARG5 ARG_NONE
|
||||
#define ARGP_ARG6 ARG_NONE
|
||||
#define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST)
|
||||
#define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BREAK_OP ARG_NONE
|
||||
#define ARGP_BREAK_POINT_OP ARG_NONE
|
||||
#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST)
|
||||
#define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
|
||||
#define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
|
||||
#define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST)
|
||||
#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)
|
||||
#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
|
||||
#define ARGP_CONTINUE_OP ARG_NONE
|
||||
#define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME)
|
||||
#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_DEBUG_OP ARG_NONE
|
||||
#define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
|
||||
#define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET)
|
||||
#define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA)
|
||||
#define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST)
|
||||
#define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME)
|
||||
#define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG)
|
||||
#define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST)
|
||||
#define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
|
||||
#define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST)
|
||||
#define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME)
|
||||
#define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LOCAL0 ARG_NONE
|
||||
#define ARGP_LOCAL1 ARG_NONE
|
||||
#define ARGP_LOCAL2 ARG_NONE
|
||||
@ -180,105 +229,57 @@
|
||||
#define ARGP_LOCAL5 ARG_NONE
|
||||
#define ARGP_LOCAL6 ARG_NONE
|
||||
#define ARGP_LOCAL7 ARG_NONE
|
||||
#define ARGP_ARG0 ARG_NONE
|
||||
#define ARGP_ARG1 ARG_NONE
|
||||
#define ARGP_ARG2 ARG_NONE
|
||||
#define ARGP_ARG3 ARG_NONE
|
||||
#define ARGP_ARG4 ARG_NONE
|
||||
#define ARGP_ARG5 ARG_NONE
|
||||
#define ARGP_ARG6 ARG_NONE
|
||||
#define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME)
|
||||
#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST)
|
||||
#define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET)
|
||||
#define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA)
|
||||
#define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ)
|
||||
#define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_NOOP_OP ARG_NONE
|
||||
#define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
|
||||
#define ARGP_ONE_OP ARG_NONE
|
||||
#define ARGP_ONES_OP ARG_NONE
|
||||
#define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
|
||||
#define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST)
|
||||
#define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST)
|
||||
#define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA)
|
||||
#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_REVISION_OP ARG_NONE
|
||||
#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
|
||||
#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
|
||||
#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_CREATE_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME)
|
||||
#define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST)
|
||||
#define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
|
||||
#define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME)
|
||||
#define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_CONTINUE_OP ARG_NONE
|
||||
#define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
|
||||
#define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST)
|
||||
#define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
|
||||
#define ARGP_NOOP_OP ARG_NONE
|
||||
#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_BREAK_OP ARG_NONE
|
||||
#define ARGP_BREAK_POINT_OP ARG_NONE
|
||||
#define ARGP_ONES_OP ARG_NONE
|
||||
#define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA)
|
||||
#define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME)
|
||||
#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
|
||||
#define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
|
||||
#define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME)
|
||||
#define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG)
|
||||
#define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA)
|
||||
#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
|
||||
#define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
|
||||
#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME)
|
||||
#define ARGP_REVISION_OP ARG_NONE
|
||||
#define ARGP_DEBUG_OP ARG_NONE
|
||||
#define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG)
|
||||
#define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST)
|
||||
#define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
|
||||
#define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST)
|
||||
#define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST)
|
||||
#define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
|
||||
#define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST)
|
||||
#define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST)
|
||||
#define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAMESTRING, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
|
||||
#define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING)
|
||||
#define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
|
||||
#define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
|
||||
#define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
|
||||
#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA)
|
||||
#define ARGP_ZERO_OP ARG_NONE
|
||||
|
||||
|
||||
/*
|
||||
@ -288,20 +289,69 @@
|
||||
* (Used by PrepOperands procedure and the ASL Compiler)
|
||||
*/
|
||||
|
||||
#define ARGI_ZERO_OP ARG_NONE
|
||||
#define ARGI_ONE_OP ARG_NONE
|
||||
|
||||
#define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER)
|
||||
#define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_ALIAS_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NAME_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BYTE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_WORD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_DWORD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_STRING_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_QWORD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_ARG0 ARG_NONE
|
||||
#define ARGI_ARG1 ARG_NONE
|
||||
#define ARGI_ARG2 ARG_NONE
|
||||
#define ARGI_ARG3 ARG_NONE
|
||||
#define ARGI_ARG4 ARG_NONE
|
||||
#define ARGI_ARG5 ARG_NONE
|
||||
#define ARGI_ARG6 ARG_NONE
|
||||
#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BREAK_OP ARG_NONE
|
||||
#define ARGI_BREAK_POINT_OP ARG_NONE
|
||||
#define ARGI_BUFFER_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_PACKAGE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_VAR_PACKAGE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_METHOD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BYTE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
|
||||
#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
|
||||
#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
|
||||
#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
|
||||
#define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING)
|
||||
#define ARGI_DEBUG_OP ARG_NONE
|
||||
#define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
|
||||
#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE)
|
||||
#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF)
|
||||
#define ARGI_DWORD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_ELSE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_EVENT_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_IF_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
|
||||
#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_LLESS_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER)
|
||||
#define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF)
|
||||
#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF)
|
||||
#define ARGI_LOCAL0 ARG_NONE
|
||||
#define ARGI_LOCAL1 ARG_NONE
|
||||
#define ARGI_LOCAL2 ARG_NONE
|
||||
@ -310,105 +360,57 @@
|
||||
#define ARGI_LOCAL5 ARG_NONE
|
||||
#define ARGI_LOCAL6 ARG_NONE
|
||||
#define ARGI_LOCAL7 ARG_NONE
|
||||
#define ARGI_ARG0 ARG_NONE
|
||||
#define ARGI_ARG1 ARG_NONE
|
||||
#define ARGI_ARG2 ARG_NONE
|
||||
#define ARGI_ARG3 ARG_NONE
|
||||
#define ARGI_ARG4 ARG_NONE
|
||||
#define ARGI_ARG5 ARG_NONE
|
||||
#define ARGI_ARG6 ARG_NONE
|
||||
#define ARGI_STORE_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_TARGETREF)
|
||||
#define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF)
|
||||
#define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
|
||||
#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
|
||||
#define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
|
||||
#define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_METHOD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFERSTRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF)
|
||||
#define ARGI_MUTEX_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NAME_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NOOP_OP ARG_NONE
|
||||
#define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER)
|
||||
#define ARGI_ONE_OP ARG_NONE
|
||||
#define ARGI_ONES_OP ARG_NONE
|
||||
#define ARGI_PACKAGE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_QWORD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF)
|
||||
#define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX)
|
||||
#define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT)
|
||||
#define ARGI_RETURN_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_REVISION_OP ARG_NONE
|
||||
#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE)
|
||||
#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
|
||||
#define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER)
|
||||
#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
|
||||
#define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT)
|
||||
#define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_CREATE_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE)
|
||||
#define ARGI_CREATE_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER)
|
||||
#define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_LLESS_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER)
|
||||
#define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER)
|
||||
#define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_STORE_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_TARGETREF)
|
||||
#define ARGI_STRING_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
|
||||
#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
|
||||
#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
|
||||
#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
|
||||
#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
|
||||
#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET)
|
||||
#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
|
||||
#define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFERSTRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_IF_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_ELSE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_WHILE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NOOP_OP ARG_NONE
|
||||
#define ARGI_RETURN_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BREAK_OP ARG_NONE
|
||||
#define ARGI_BREAK_POINT_OP ARG_NONE
|
||||
#define ARGI_ONES_OP ARG_NONE
|
||||
#define ARGI_MUTEX_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_EVENT_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
|
||||
#define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE)
|
||||
#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF)
|
||||
#define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF)
|
||||
#define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER)
|
||||
#define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER)
|
||||
#define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER)
|
||||
#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
|
||||
#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
|
||||
#define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT)
|
||||
#define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX)
|
||||
#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
|
||||
#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
|
||||
#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE)
|
||||
#define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE)
|
||||
#define ARGI_REVISION_OP ARG_NONE
|
||||
#define ARGI_DEBUG_OP ARG_NONE
|
||||
#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
|
||||
#define ARGI_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING)
|
||||
#define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_VAR_PACKAGE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
|
||||
#define ARGI_WHILE_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_WORD_OP ARGI_INVALID_OPCODE
|
||||
#define ARGI_ZERO_OP ARG_NONE
|
||||
|
||||
|
||||
/*
|
||||
@ -674,7 +676,7 @@ static const ACPI_OPCODE_INFO AmlOpInfo[] =
|
||||
/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS),
|
||||
/* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS ),
|
||||
/* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS),
|
||||
/* 7C */ ACPI_OP ("DataOpRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS),
|
||||
/* 7C */ ACPI_OP ("DataOpRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2R| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
|
||||
|
||||
};
|
||||
|
||||
@ -808,15 +810,6 @@ AcpiPsGetOpcodeInfo (
|
||||
break;
|
||||
|
||||
|
||||
case AML_LNOT_OP:
|
||||
|
||||
/* This case is for the bogus opcodes LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL */
|
||||
/* TBD: [Investigate] remove this case? */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Bad multi-byte opcode=%X\n", Opcode));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown extended opcode=%X\n", Opcode));
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psscope - Parser scope stack management routines
|
||||
* $Revision: 29 $
|
||||
* $Revision: 30 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -195,6 +195,7 @@ AcpiPsInitScope (
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Scope->Common.DataType = ACPI_DESC_TYPE_STATE_RPSCOPE;
|
||||
Scope->ParseScope.Op = RootOp;
|
||||
Scope->ParseScope.ArgCount = ACPI_VAR_ARGS;
|
||||
Scope->ParseScope.ArgEnd = ParserState->AmlEnd;
|
||||
@ -242,6 +243,7 @@ AcpiPsPushScope (
|
||||
}
|
||||
|
||||
|
||||
Scope->Common.DataType = ACPI_DESC_TYPE_STATE_PSCOPE;
|
||||
Scope->ParseScope.Op = Op;
|
||||
Scope->ParseScope.ArgList = RemainingArgs;
|
||||
Scope->ParseScope.ArgCount = ArgCount;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: pstree - Parser op tree manipulation/traversal/search
|
||||
* $Revision: 32 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -219,6 +219,7 @@ AcpiPsAppendArg (
|
||||
{
|
||||
/* Invalid opcode */
|
||||
|
||||
REPORT_ERROR (("PsAppendArg: Invalid AML Opcode: 0x%2.2X\n", Op->Opcode));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psutils - Parser miscellaneous utilities (Parser only)
|
||||
* $Revision: 43 $
|
||||
* $Revision: 44 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -125,8 +125,8 @@
|
||||
|
||||
#define PARSEOP_GENERIC 0x01
|
||||
#define PARSEOP_NAMED 0x02
|
||||
#define PARSEOP_DEFERRED 0x03
|
||||
#define PARSEOP_BYTELIST 0x04
|
||||
#define PARSEOP_DEFERRED 0x04
|
||||
#define PARSEOP_BYTELIST 0x08
|
||||
#define PARSEOP_IN_CACHE 0x80
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: pswalk - Parser routines to walk parsed op tree(s)
|
||||
* $Revision: 56 $
|
||||
* $Revision: 58 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -181,7 +181,11 @@ AcpiPsGetNextWalkOp (
|
||||
Next = Op->Next;
|
||||
Parent = Op->Parent;
|
||||
|
||||
Status = AscendingCallback (WalkState, Op);
|
||||
WalkState->Op = Op;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
WalkState->Opcode = Op->Opcode;
|
||||
|
||||
Status = AscendingCallback (WalkState);
|
||||
|
||||
/*
|
||||
* If we are back to the starting point, the walk is complete.
|
||||
@ -241,7 +245,11 @@ AcpiPsGetNextWalkOp (
|
||||
GrandParent = Parent->Parent;
|
||||
Next = Parent->Next;
|
||||
|
||||
Status = AscendingCallback (WalkState, Parent);
|
||||
WalkState->Op = Parent;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Parent->Opcode);
|
||||
WalkState->Opcode = Parent->Opcode;
|
||||
|
||||
Status = AscendingCallback (WalkState);
|
||||
|
||||
/*
|
||||
* If we are back to the starting point, the walk is complete.
|
||||
@ -305,11 +313,10 @@ AcpiPsGetNextWalkOp (
|
||||
|
||||
static ACPI_STATUS
|
||||
AcpiPsDeleteCompletedOp (
|
||||
ACPI_WALK_STATE *State,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
ACPI_WALK_STATE *WalkState)
|
||||
{
|
||||
|
||||
AcpiPsFreeOp (Op);
|
||||
AcpiPsFreeOp (WalkState->Op);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
@ -354,7 +361,6 @@ AcpiPsDeleteParseTree (
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
WalkState->ParserState = NULL;
|
||||
WalkState->ParseFlags = 0;
|
||||
WalkState->DescendingCallback = NULL;
|
||||
WalkState->AscendingCallback = NULL;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psxface - Parser external interfaces
|
||||
* $Revision: 47 $
|
||||
* $Revision: 51 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -156,6 +156,7 @@ AcpiPsxExecute (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
UINT32 i;
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
ACPI_WALK_STATE *WalkState;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("PsxExecute");
|
||||
@ -195,9 +196,47 @@ AcpiPsxExecute (
|
||||
}
|
||||
|
||||
/*
|
||||
* Perform the first pass parse of the method to enter any
|
||||
* 1) Perform the first pass parse of the method to enter any
|
||||
* named objects that it creates into the namespace
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"**** Begin Method Parse **** Entry=%p obj=%p\n",
|
||||
MethodNode, ObjDesc));
|
||||
|
||||
/* Create and init a Root Node */
|
||||
|
||||
Op = AcpiPsAllocOp (AML_SCOPE_OP);
|
||||
if (!Op)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Create and initialize a new walk state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, MethodNode, ObjDesc->Method.AmlStart,
|
||||
ObjDesc->Method.AmlLength, NULL, NULL, 1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parse the AML */
|
||||
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
|
||||
/*
|
||||
* 2) Execute the method. Performs second pass parse simultaneously
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"**** Begin Method Execution **** Entry=%p obj=%p\n",
|
||||
MethodNode, ObjDesc));
|
||||
@ -210,35 +249,32 @@ AcpiPsxExecute (
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode,
|
||||
ObjDesc->Method.PcodeLength,
|
||||
ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
|
||||
MethodNode, Params, ReturnObjDesc,
|
||||
AcpiDsLoad1BeginOp, AcpiDsLoad1EndOp);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
/* Create and init a Root Node */
|
||||
|
||||
Op = AcpiPsAllocOp (AML_SCOPE_OP);
|
||||
if (!Op)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
||||
/* Init new op with the method name and pointer back to the NS node */
|
||||
|
||||
AcpiPsSetName (Op, MethodNode->Name);
|
||||
Op->Node = MethodNode;
|
||||
|
||||
/* Create and initialize a new walk state */
|
||||
|
||||
WalkState = AcpiDsCreateWalkState (TABLE_ID_DSDT,
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, MethodNode, ObjDesc->Method.AmlStart,
|
||||
ObjDesc->Method.AmlLength, Params, ReturnObjDesc, 3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* TBD: delete walk state */
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* The walk of the parse tree is where we actually execute the method
|
||||
*/
|
||||
Status = AcpiPsParseAml (Op, ObjDesc->Method.Pcode,
|
||||
ObjDesc->Method.PcodeLength,
|
||||
ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE,
|
||||
MethodNode, Params, ReturnObjDesc,
|
||||
AcpiDsExecBeginOp, AcpiDsExecEndOp);
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
if (Params)
|
||||
@ -252,6 +288,13 @@ AcpiPsxExecute (
|
||||
}
|
||||
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
DUMP_PATHNAME (MethodNode, "PsExecute: method failed -",
|
||||
ACPI_LV_ERROR, _COMPONENT);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* If the method has returned an object, signal this to the caller with
|
||||
* a control exception code
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsutils - Utilities for the resource manager
|
||||
* $Revision: 21 $
|
||||
* $Revision: 22 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -412,7 +412,6 @@ AcpiRsSetSrsMethodData (
|
||||
ACPI_BUFFER *InBuffer)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT *Params[2];
|
||||
ACPI_OPERAND_OBJECT ParamObj;
|
||||
ACPI_STATUS Status;
|
||||
UINT8 *ByteStream = NULL;
|
||||
UINT32 BufferSizeNeeded = 0;
|
||||
@ -466,25 +465,25 @@ AcpiRsSetSrsMethodData (
|
||||
/*
|
||||
* Init the param object
|
||||
*/
|
||||
AcpiUtInitStaticObject (&ParamObj);
|
||||
|
||||
/*
|
||||
* Method requires one parameter. Set it up
|
||||
*/
|
||||
Params [0] = &ParamObj;
|
||||
Params[0] = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER);
|
||||
if (!Params[0])
|
||||
{
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup;
|
||||
}
|
||||
Params [1] = NULL;
|
||||
|
||||
/*
|
||||
* Set up the parameter object
|
||||
*/
|
||||
ParamObj.Common.Type = ACPI_TYPE_BUFFER;
|
||||
ParamObj.Buffer.Length = BufferSizeNeeded;
|
||||
ParamObj.Buffer.Pointer = ByteStream;
|
||||
Params[0]->Buffer.Length = BufferSizeNeeded;
|
||||
Params[0]->Buffer.Pointer = ByteStream;
|
||||
|
||||
/*
|
||||
* Execute the method, no return value
|
||||
*/
|
||||
Status = AcpiNsEvaluateRelative (Handle, "_SRS", Params, NULL);
|
||||
AcpiUtRemoveReference (Params[0]);
|
||||
|
||||
/*
|
||||
* Clean up and return the status from AcpiNsEvaluateRelative
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsxface - Public interfaces to the resource manager
|
||||
* $Revision: 14 $
|
||||
* $Revision: 15 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -160,14 +160,6 @@ AcpiGetIrqRoutingTable (
|
||||
FUNCTION_TRACE ("AcpiGetIrqRoutingTable ");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Must have a valid handle and buffer, So we have to have a handle
|
||||
* and a return buffer structure, and if there is a non-zero buffer length
|
||||
@ -221,14 +213,6 @@ AcpiGetCurrentResources (
|
||||
FUNCTION_TRACE ("AcpiGetCurrentResources");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Must have a valid handle and buffer, So we have to have a handle
|
||||
* and a return buffer structure, and if there is a non-zero buffer length
|
||||
@ -279,14 +263,6 @@ AcpiGetPossibleResources (
|
||||
FUNCTION_TRACE ("AcpiGetPossibleResources");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Must have a valid handle and buffer, So we have to have a handle
|
||||
* and a return buffer structure, and if there is a non-zero buffer length
|
||||
@ -334,14 +310,6 @@ AcpiSetCurrentResources (
|
||||
FUNCTION_TRACE ("AcpiSetCurrentResources");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Must have a valid handle and buffer
|
||||
*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbinstal - ACPI table installation and removal
|
||||
* $Revision: 42 $
|
||||
* $Revision: 44 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -371,7 +371,7 @@ AcpiTbInitTableDescriptor (
|
||||
TableDesc->BasePointer = TableInfo->BasePointer;
|
||||
TableDesc->Length = TableInfo->Length;
|
||||
TableDesc->Allocation = TableInfo->Allocation;
|
||||
TableDesc->AmlPointer = (UINT8 *) (TableDesc->Pointer + 1),
|
||||
TableDesc->AmlStart = (UINT8 *) (TableDesc->Pointer + 1),
|
||||
TableDesc->AmlLength = (UINT32) (TableDesc->Length -
|
||||
(UINT32) sizeof (ACPI_TABLE_HEADER));
|
||||
TableDesc->TableId = AcpiUtAllocateOwnerId (OWNER_TYPE_TABLE);
|
||||
@ -659,6 +659,7 @@ AcpiTbUninstallTable (
|
||||
}
|
||||
|
||||
|
||||
|
||||
return_PTR (NextDesc);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: tbxface - Public interfaces to the ACPI subsystem
|
||||
* ACPI table oriented interfaces
|
||||
* $Revision: 43 $
|
||||
* $Revision: 45 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -151,15 +151,6 @@ AcpiLoadTables (void)
|
||||
FUNCTION_TRACE ("AcpiLoadTables");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/* Get the RSDP */
|
||||
|
||||
Status = AcpiOsGetRootPointer (ACPI_LOGICAL_ADDRESSING,
|
||||
@ -252,14 +243,6 @@ AcpiLoadTable (
|
||||
FUNCTION_TRACE ("AcpiLoadTable");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if (!TablePtr)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
@ -316,20 +299,11 @@ AcpiUnloadTable (
|
||||
ACPI_TABLE_TYPE TableType)
|
||||
{
|
||||
ACPI_TABLE_DESC *ListHead;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiUnloadTable");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (TableType > ACPI_TABLE_MAX)
|
||||
@ -395,14 +369,6 @@ AcpiGetTableHeader (
|
||||
FUNCTION_TRACE ("AcpiGetTableHeader");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
if ((Instance == 0) ||
|
||||
(TableType == ACPI_TABLE_RSDP) ||
|
||||
(!OutTableHeader))
|
||||
@ -483,14 +449,6 @@ AcpiGetTable (
|
||||
FUNCTION_TRACE ("AcpiGetTable");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have a buffer, we must have a length too
|
||||
*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
|
||||
* $Revision: 49 $
|
||||
* $Revision: 51 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -380,10 +380,10 @@ AcpiGetFirmwareTable (
|
||||
ACPI_TABLE_HEADER **TablePointer)
|
||||
{
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress;
|
||||
ACPI_TABLE_HEADER *RsdtPtr;
|
||||
ACPI_TABLE_HEADER *RsdtPtr = NULL;
|
||||
ACPI_TABLE_HEADER *TablePtr;
|
||||
ACPI_STATUS Status;
|
||||
UINT32 RsdtSize;
|
||||
UINT32 RsdtSize = 0;
|
||||
UINT32 TableSize;
|
||||
UINT32 TableCount;
|
||||
UINT32 i;
|
||||
@ -408,16 +408,53 @@ AcpiGetFirmwareTable (
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Get the RSDP */
|
||||
|
||||
Status = AcpiOsGetRootPointer (Flags, &PhysicalAddress);
|
||||
if (ACPI_FAILURE (Status))
|
||||
if (!AcpiGbl_RSDP)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP not found\n"));
|
||||
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
|
||||
/* Get the RSDP */
|
||||
|
||||
Status = AcpiOsGetRootPointer (Flags, &PhysicalAddress);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP not found\n"));
|
||||
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
|
||||
}
|
||||
|
||||
/* Map and validate the RSDP */
|
||||
|
||||
if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING)
|
||||
{
|
||||
Status = AcpiOsMapMemory (PhysicalAddress, sizeof (RSDP_DESCRIPTOR),
|
||||
(void **) &AcpiGbl_RSDP);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiGbl_RSDP = (void *) (NATIVE_UINT) PhysicalAddress;
|
||||
}
|
||||
|
||||
/*
|
||||
* The signature and checksum must both be correct
|
||||
*/
|
||||
if (STRNCMP ((NATIVE_CHAR *) AcpiGbl_RSDP, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0)
|
||||
{
|
||||
/* Nope, BAD Signature */
|
||||
|
||||
Status = AE_BAD_SIGNATURE;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
if (AcpiTbChecksum (AcpiGbl_RSDP, RSDP_CHECKSUM_LENGTH) != 0)
|
||||
{
|
||||
/* Nope, BAD Checksum */
|
||||
|
||||
Status = AE_BAD_CHECKSUM;
|
||||
goto Cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
AcpiGbl_RSDP = (RSDP_DESCRIPTOR *) (ACPI_TBLPTR) PhysicalAddress;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"RSDP located at %p, RSDT physical=%8.8lX%8.8lX \n",
|
||||
@ -490,7 +527,8 @@ AcpiGetFirmwareTable (
|
||||
|
||||
/* Delete table mapping if using virtual addressing */
|
||||
|
||||
if (TableSize)
|
||||
if ((TableSize) &&
|
||||
((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING))
|
||||
{
|
||||
AcpiOsUnmapMemory (TablePtr, TableSize);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utalloc - local cache and memory allocation routines
|
||||
* $Revision: 100 $
|
||||
* $Revision: 103 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -169,6 +169,7 @@ AcpiUtReleaseToCache (
|
||||
/* Mark the object as cached */
|
||||
|
||||
MEMSET (Object, 0xCA, CacheInfo->ObjectSize);
|
||||
((ACPI_OPERAND_OBJECT *) Object)->Common.DataType = ACPI_CACHED_OBJECT;
|
||||
|
||||
/* Put the object at the head of the cache list */
|
||||
|
||||
@ -297,14 +298,14 @@ AcpiUtDeleteGenericCache (
|
||||
* Each memory allocation is tracked via a doubly linked list. Each
|
||||
* element contains the caller's component, module name, function name, and
|
||||
* line number. AcpiUtAllocate and AcpiUtCallocate call
|
||||
* AcpiUtAddElementToAllocList to add an element to the list; deletion
|
||||
* AcpiUtTrackAllocation to add an element to the list; deletion
|
||||
* occurs in the body of AcpiUtFree.
|
||||
*/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtSearchAllocList
|
||||
* FUNCTION: AcpiUtFindAllocation
|
||||
*
|
||||
* PARAMETERS: Address - Address of allocated memory
|
||||
*
|
||||
@ -315,7 +316,7 @@ AcpiUtDeleteGenericCache (
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_DEBUG_MEM_BLOCK *
|
||||
AcpiUtSearchAllocList (
|
||||
AcpiUtFindAllocation (
|
||||
UINT32 ListId,
|
||||
void *Address)
|
||||
{
|
||||
@ -350,7 +351,7 @@ AcpiUtSearchAllocList (
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtAddElementToAllocList
|
||||
* FUNCTION: AcpiUtTrackAllocation
|
||||
*
|
||||
* PARAMETERS: Address - Address of allocated memory
|
||||
* Size - Size of the allocation
|
||||
@ -366,7 +367,7 @@ AcpiUtSearchAllocList (
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtAddElementToAllocList (
|
||||
AcpiUtTrackAllocation (
|
||||
UINT32 ListId,
|
||||
ACPI_DEBUG_MEM_BLOCK *Address,
|
||||
UINT32 Size,
|
||||
@ -380,7 +381,7 @@ AcpiUtAddElementToAllocList (
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
|
||||
FUNCTION_TRACE_PTR ("UtAddElementToAllocList", Address);
|
||||
FUNCTION_TRACE_PTR ("UtTrackAllocation", Address);
|
||||
|
||||
|
||||
if (ListId > ACPI_MEM_LIST_MAX)
|
||||
@ -396,10 +397,10 @@ AcpiUtAddElementToAllocList (
|
||||
* This will catch several kinds of problems.
|
||||
*/
|
||||
|
||||
Element = AcpiUtSearchAllocList (ListId, Address);
|
||||
Element = AcpiUtFindAllocation (ListId, Address);
|
||||
if (Element)
|
||||
{
|
||||
REPORT_ERROR (("UtAddElementToAllocList: Address already present in list! (%p)\n",
|
||||
REPORT_ERROR (("UtTrackAllocation: Address already present in list! (%p)\n",
|
||||
Address));
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Element %p Address %p\n", Element, Address));
|
||||
@ -437,7 +438,7 @@ AcpiUtAddElementToAllocList (
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtDeleteElementFromAllocList
|
||||
* FUNCTION: AcpiUtRemoveAllocation
|
||||
*
|
||||
* PARAMETERS: Address - Address of allocated memory
|
||||
* Component - Component type of caller
|
||||
@ -451,7 +452,7 @@ AcpiUtAddElementToAllocList (
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtDeleteElementFromAllocList (
|
||||
AcpiUtRemoveAllocation (
|
||||
UINT32 ListId,
|
||||
ACPI_DEBUG_MEM_BLOCK *Address,
|
||||
UINT32 Component,
|
||||
@ -461,7 +462,7 @@ AcpiUtDeleteElementFromAllocList (
|
||||
ACPI_MEMORY_LIST *MemList;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("UtDeleteElementFromAllocList");
|
||||
FUNCTION_TRACE ("UtRemoveAllocation");
|
||||
|
||||
|
||||
if (ListId > ACPI_MEM_LIST_MAX)
|
||||
@ -475,7 +476,7 @@ AcpiUtDeleteElementFromAllocList (
|
||||
/* No allocations! */
|
||||
|
||||
_REPORT_ERROR (Module, Line, Component,
|
||||
("UtDeleteElementFromAllocList: Empty allocation list, nothing to free!\n"));
|
||||
("UtRemoveAllocation: Empty allocation list, nothing to free!\n"));
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
@ -572,7 +573,7 @@ AcpiUtDumpAllocationInfo (
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtDumpCurrentAllocations
|
||||
* FUNCTION: AcpiUtDumpAllocations
|
||||
*
|
||||
* PARAMETERS: Component - Component(s) to dump info for.
|
||||
* Module - Module to dump info for. NULL means all.
|
||||
@ -584,7 +585,7 @@ AcpiUtDumpAllocationInfo (
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiUtDumpCurrentAllocations (
|
||||
AcpiUtDumpAllocations (
|
||||
UINT32 Component,
|
||||
NATIVE_CHAR *Module)
|
||||
{
|
||||
@ -592,13 +593,13 @@ AcpiUtDumpCurrentAllocations (
|
||||
UINT32 i;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("UtDumpCurrentAllocations");
|
||||
FUNCTION_TRACE ("UtDumpAllocations");
|
||||
|
||||
|
||||
Element = AcpiGbl_MemoryLists[0].ListHead;
|
||||
if (Element == NULL)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OK,
|
||||
"No outstanding allocations.\n"));
|
||||
return_VOID;
|
||||
}
|
||||
@ -609,7 +610,7 @@ AcpiUtDumpCurrentAllocations (
|
||||
*/
|
||||
AcpiUtAcquireMutex (ACPI_MTX_MEMORY);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OK,
|
||||
"Outstanding allocations:\n"));
|
||||
|
||||
for (i = 1; ; i++) /* Just a counter */
|
||||
@ -617,41 +618,84 @@ AcpiUtDumpCurrentAllocations (
|
||||
if ((Element->Component & Component) &&
|
||||
((Module == NULL) || (0 == STRCMP (Module, Element->Module))))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
|
||||
"%p Len %04lX %9.9s-%ld",
|
||||
&Element->UserSpace, Element->Size, Element->Module,
|
||||
Element->Line));
|
||||
|
||||
/* Most of the elements will be internal objects. */
|
||||
|
||||
switch (((ACPI_OPERAND_OBJECT *)
|
||||
(&Element->UserSpace))->Common.DataType)
|
||||
if (((ACPI_OPERAND_OBJECT *)(&Element->UserSpace))->Common.Type != ACPI_CACHED_OBJECT)
|
||||
{
|
||||
case ACPI_DESC_TYPE_INTERNAL:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
|
||||
" ObjType %s",
|
||||
AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)(&Element->UserSpace))->Common.Type)));
|
||||
break;
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
"%p Len %04lX %9.9s-%ld",
|
||||
&Element->UserSpace, Element->Size, Element->Module,
|
||||
Element->Line));
|
||||
|
||||
case ACPI_DESC_TYPE_PARSER:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
|
||||
" ParseObj Opcode %04X",
|
||||
((ACPI_PARSE_OBJECT *)(&Element->UserSpace))->Opcode));
|
||||
break;
|
||||
/* Most of the elements will be internal objects. */
|
||||
|
||||
case ACPI_DESC_TYPE_NAMED:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
|
||||
" Node %4.4s",
|
||||
&((ACPI_NAMESPACE_NODE *)(&Element->UserSpace))->Name));
|
||||
break;
|
||||
switch (((ACPI_OPERAND_OBJECT *)
|
||||
(&Element->UserSpace))->Common.DataType)
|
||||
{
|
||||
case ACPI_DESC_TYPE_INTERNAL:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" ObjType %s",
|
||||
AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)(&Element->UserSpace))->Common.Type)));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
|
||||
" StateObj"));
|
||||
break;
|
||||
case ACPI_DESC_TYPE_PARSER:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" ParseObj Opcode %04X",
|
||||
((ACPI_PARSE_OBJECT *)(&Element->UserSpace))->Opcode));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_NAMED:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" Node %4.4s",
|
||||
&((ACPI_NAMESPACE_NODE *)(&Element->UserSpace))->Name));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" Untyped StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_UPDATE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" UPDATE StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_PACKAGE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" PACKAGE StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_CONTROL:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" CONTROL StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_RPSCOPE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" ROOT-PARSE-SCOPE StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_PSCOPE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" PARSE-SCOPE StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_WSCOPE:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" WALK-SCOPE StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_RESULT:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" RESULT StateObj"));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_NOTIFY:
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
|
||||
" NOTIFY StateObj"));
|
||||
break;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "\n"));
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS, "\n"));
|
||||
}
|
||||
|
||||
if (Element->Next == NULL)
|
||||
@ -664,7 +708,7 @@ AcpiUtDumpCurrentAllocations (
|
||||
|
||||
AcpiUtReleaseMutex (ACPI_MTX_MEMORY);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OK,
|
||||
"Total number of unfreed allocations = %d(%X)\n", i,i));
|
||||
|
||||
|
||||
@ -722,7 +766,7 @@ AcpiUtAllocate (
|
||||
return_PTR (NULL);
|
||||
}
|
||||
|
||||
Status = AcpiUtAddElementToAllocList (ACPI_MEM_LIST_GLOBAL, Address, Size,
|
||||
Status = AcpiUtTrackAllocation (ACPI_MEM_LIST_GLOBAL, Address, Size,
|
||||
MEM_MALLOC, Component, Module, Line);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -788,7 +832,7 @@ AcpiUtCallocate (
|
||||
return_PTR (NULL);
|
||||
}
|
||||
|
||||
Status = AcpiUtAddElementToAllocList (ACPI_MEM_LIST_GLOBAL, Address, Size,
|
||||
Status = AcpiUtTrackAllocation (ACPI_MEM_LIST_GLOBAL, Address, Size,
|
||||
MEM_CALLOC, Component, Module, Line);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -846,7 +890,7 @@ AcpiUtFree (
|
||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].TotalFreed++;
|
||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_GLOBAL].CurrentTotalSize -= DebugBlock->Size;
|
||||
|
||||
AcpiUtDeleteElementFromAllocList (ACPI_MEM_LIST_GLOBAL, DebugBlock,
|
||||
AcpiUtRemoveAllocation (ACPI_MEM_LIST_GLOBAL, DebugBlock,
|
||||
Component, Module, Line);
|
||||
AcpiOsFree (DebugBlock);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utcopy - Internal to external object translation utilities
|
||||
* $Revision: 79 $
|
||||
* $Revision: 82 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -228,6 +228,11 @@ AcpiUtCopyIsimpleToEsimple (
|
||||
ExternalObject->Integer.Value = ACPI_INTEGER_MAX;
|
||||
break;
|
||||
|
||||
case AML_REVISION_OP:
|
||||
ExternalObject->Type = ACPI_TYPE_INTEGER;
|
||||
ExternalObject->Integer.Value = ACPI_CA_VERSION;
|
||||
break;
|
||||
|
||||
case AML_INT_NAMEPATH_OP:
|
||||
/*
|
||||
* This is a named reference, get the string. We already know that
|
||||
@ -516,37 +521,29 @@ AcpiUtCopyIobjectToEobject (
|
||||
ACPI_STATUS
|
||||
AcpiUtCopyEsimpleToIsimple (
|
||||
ACPI_OBJECT *ExternalObject,
|
||||
ACPI_OPERAND_OBJECT *InternalObject)
|
||||
ACPI_OPERAND_OBJECT **RetInternalObject)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT *InternalObject;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("UtCopyEsimpleToIsimple");
|
||||
|
||||
|
||||
InternalObject->Common.Type = (UINT8) ExternalObject->Type;
|
||||
|
||||
/*
|
||||
* Simple types supported are: String, Buffer, Integer
|
||||
*/
|
||||
switch (ExternalObject->Type)
|
||||
{
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
InternalObject->String.Length = ExternalObject->String.Length;
|
||||
InternalObject->String.Pointer = ExternalObject->String.Pointer;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
InternalObject->Buffer.Length = ExternalObject->Buffer.Length;
|
||||
InternalObject->Buffer.Pointer = ExternalObject->Buffer.Pointer;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
InternalObject->Integer.Value = ExternalObject->Integer.Value;
|
||||
InternalObject = AcpiUtCreateInternalObject ((UINT8) ExternalObject->Type);
|
||||
if (!InternalObject)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -558,6 +555,51 @@ AcpiUtCopyEsimpleToIsimple (
|
||||
}
|
||||
|
||||
|
||||
switch (ExternalObject->Type)
|
||||
{
|
||||
|
||||
/* Must COPY string and buffer contents */
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
InternalObject->String.Pointer = ACPI_MEM_CALLOCATE (ExternalObject->String.Length + 1);
|
||||
if (!InternalObject->String.Pointer)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
MEMCPY (InternalObject->String.Pointer,
|
||||
ExternalObject->String.Pointer,
|
||||
ExternalObject->String.Length);
|
||||
|
||||
InternalObject->String.Length = ExternalObject->String.Length;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
InternalObject->Buffer.Pointer = ACPI_MEM_CALLOCATE (ExternalObject->Buffer.Length);
|
||||
if (!InternalObject->Buffer.Pointer)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
MEMCPY (InternalObject->Buffer.Pointer,
|
||||
ExternalObject->Buffer.Pointer,
|
||||
ExternalObject->Buffer.Length);
|
||||
|
||||
InternalObject->Buffer.Length = ExternalObject->Buffer.Length;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
InternalObject->Integer.Value = ExternalObject->Integer.Value;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
*RetInternalObject = InternalObject;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
@ -649,7 +691,7 @@ AcpiUtCopyEpackageToIpackage (
|
||||
ACPI_STATUS
|
||||
AcpiUtCopyEobjectToIobject (
|
||||
ACPI_OBJECT *ExternalObject,
|
||||
ACPI_OPERAND_OBJECT *InternalObject)
|
||||
ACPI_OPERAND_OBJECT **InternalObject)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
@ -684,10 +726,6 @@ AcpiUtCopyEobjectToIobject (
|
||||
* Build a simple object (no nested objects)
|
||||
*/
|
||||
Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject);
|
||||
/*
|
||||
* build simple does not include the object size in the length
|
||||
* so we add it in here
|
||||
*/
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utdebug - Debug print routines
|
||||
* $Revision: 87 $
|
||||
* $Revision: 89 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -182,11 +182,6 @@ AcpiUtTrackStackPtr (
|
||||
if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting)
|
||||
{
|
||||
AcpiGbl_DeepestNesting = AcpiGbl_NestingLevel;
|
||||
|
||||
if (AcpiGbl_DeepestNesting == 34)
|
||||
{
|
||||
AcpiOsPrintf ("hit deepest nesting\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: utdelete - object deletion and reference count utilities
|
||||
* $Revision: 75 $
|
||||
* $Revision: 78 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -339,22 +339,7 @@ AcpiUtDeleteInternalObjectList (
|
||||
|
||||
for (InternalObj = ObjList; *InternalObj; InternalObj++)
|
||||
{
|
||||
/*
|
||||
* Check for a package
|
||||
* Simple objects are simply stored in the array and do not
|
||||
* need to be deleted separately.
|
||||
*/
|
||||
if (IS_THIS_OBJECT_TYPE ((*InternalObj), ACPI_TYPE_PACKAGE))
|
||||
{
|
||||
/* Delete the package */
|
||||
|
||||
/*
|
||||
* TBD: [Investigate] This might not be the right thing to do,
|
||||
* depending on how the internal package object was allocated!!!
|
||||
*/
|
||||
AcpiUtDeleteInternalObj (*InternalObj);
|
||||
}
|
||||
|
||||
AcpiUtRemoveReference (*InternalObj);
|
||||
}
|
||||
|
||||
/* Free the combined parameter pointer list and object array */
|
||||
@ -472,8 +457,8 @@ AcpiUtUpdateRefCount (
|
||||
if (Count > MAX_REFERENCE_COUNT)
|
||||
{
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"**** AE_ERROR **** Invalid Reference Count (%X) in object %p\n\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_WARN,
|
||||
"**** Warning **** Large Reference Count (%X) in object %p\n\n",
|
||||
Count, Object));
|
||||
}
|
||||
|
||||
@ -538,7 +523,9 @@ AcpiUtUpdateObjectReference (
|
||||
|
||||
if (AcpiTbSystemTablePointer (Object))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Object %p is Pcode Ptr\n", Object));
|
||||
ACPI_DEBUG_PRINT (
|
||||
(ACPI_DB_INFO, "**** Object %p points into an ACPI table\n",
|
||||
Object));
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utinit - Common ACPI subsystem initialization
|
||||
* $Revision: 101 $
|
||||
* $Revision: 102 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -350,7 +350,7 @@ AcpiUtSubsystemShutdown (void)
|
||||
/* Debug only - display leftover memory allocation, if any */
|
||||
|
||||
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
|
||||
AcpiUtDumpCurrentAllocations (ACPI_UINT32_MAX, NULL);
|
||||
AcpiUtDumpAllocations (ACPI_UINT32_MAX, NULL);
|
||||
#endif
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: utmisc - common utility procedures
|
||||
* $Revision: 50 $
|
||||
* $Revision: 52 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -130,6 +130,7 @@
|
||||
MODULE_NAME ("utmisc")
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtValidAcpiName
|
||||
@ -783,6 +784,7 @@ AcpiUtCreateUpdateState (
|
||||
|
||||
/* Init fields specific to the update struct */
|
||||
|
||||
State->Common.DataType = ACPI_DESC_TYPE_STATE_UPDATE;
|
||||
State->Update.Object = Object;
|
||||
State->Update.Value = Action;
|
||||
|
||||
@ -800,9 +802,7 @@ AcpiUtCreateUpdateState (
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Create an "Update State" - a flavor of the generic state used
|
||||
* to update reference counts and delete complex objects such
|
||||
* as packages.
|
||||
* DESCRIPTION: Create a "Package State"
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -828,6 +828,7 @@ AcpiUtCreatePkgState (
|
||||
|
||||
/* Init fields specific to the update struct */
|
||||
|
||||
State->Common.DataType = ACPI_DESC_TYPE_STATE_PACKAGE;
|
||||
State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject;
|
||||
State->Pkg.DestObject = ExternalObject;
|
||||
State->Pkg.Index = Index;
|
||||
@ -871,7 +872,8 @@ AcpiUtCreateControlState (
|
||||
|
||||
/* Init fields specific to the control struct */
|
||||
|
||||
State->Common.State = CONTROL_CONDITIONAL_EXECUTING;
|
||||
State->Common.DataType = ACPI_DESC_TYPE_STATE_CONTROL;
|
||||
State->Common.State = CONTROL_CONDITIONAL_EXECUTING;
|
||||
|
||||
return_PTR (State);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utobject - ACPI object create/delete/size/cache routines
|
||||
* $Revision: 54 $
|
||||
* $Revision: 56 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -217,7 +217,9 @@ AcpiUtValidInternalObject (
|
||||
|
||||
if (AcpiTbSystemTablePointer (Object))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Object %p is a Pcode Ptr\n", Object));
|
||||
ACPI_DEBUG_PRINT (
|
||||
(ACPI_DB_INFO, "**** Object %p points into an ACPI table\n",
|
||||
Object));
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
@ -363,56 +365,6 @@ AcpiUtDeleteObjectCache (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiUtInitStaticObject
|
||||
*
|
||||
* PARAMETERS: ObjDesc - Pointer to a "static" object - on stack
|
||||
* or in the data segment.
|
||||
*
|
||||
* RETURN: None.
|
||||
*
|
||||
* DESCRIPTION: Initialize a static object. Sets flags to disallow dynamic
|
||||
* deletion of the object.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
AcpiUtInitStaticObject (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc)
|
||||
{
|
||||
|
||||
FUNCTION_TRACE_PTR ("UtInitStaticObject", ObjDesc);
|
||||
|
||||
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Clear the entire descriptor
|
||||
*/
|
||||
MEMSET ((void *) ObjDesc, 0, sizeof (ACPI_OPERAND_OBJECT));
|
||||
|
||||
|
||||
/*
|
||||
* Initialize the header fields
|
||||
* 1) This is an ACPI_OPERAND_OBJECT descriptor
|
||||
* 2) The size is the full object (worst case)
|
||||
* 3) The flags field indicates static allocation
|
||||
* 4) Reference count starts at one (not really necessary since the
|
||||
* object can't be deleted, but keeps everything sane)
|
||||
*/
|
||||
|
||||
ObjDesc->Common.DataType = ACPI_DESC_TYPE_INTERNAL;
|
||||
ObjDesc->Common.Flags = AOPOBJ_STATIC_ALLOCATION;
|
||||
ObjDesc->Common.ReferenceCount = 1;
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utxface - External interfaces for "global" ACPI functions
|
||||
* $Revision: 80 $
|
||||
* $Revision: 82 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -349,20 +349,9 @@ AcpiEnableSubsystem (
|
||||
ACPI_STATUS
|
||||
AcpiTerminate (void)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiTerminate");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Terminate the AML Debugger if present */
|
||||
|
||||
DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE);
|
||||
@ -381,10 +370,18 @@ AcpiTerminate (void)
|
||||
AcpiUtMutexTerminate ();
|
||||
|
||||
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
|
||||
/* Shut down the debugger */
|
||||
|
||||
AcpiDbTerminate ();
|
||||
#endif
|
||||
|
||||
/* Now we can shutdown the OS-dependent layer */
|
||||
|
||||
AcpiOsTerminate ();
|
||||
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
@ -442,20 +439,11 @@ AcpiGetSystemInfo (
|
||||
{
|
||||
ACPI_SYSTEM_INFO *InfoPtr;
|
||||
UINT32 i;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("AcpiGetSystemInfo");
|
||||
|
||||
|
||||
/* Ensure that ACPI has been initialized */
|
||||
|
||||
ACPI_IS_INITIALIZATION_COMPLETE (Status);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Must have a valid buffer
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user