This commit was generated by cvs2svn to compensate for changes in r123315,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
2afe25109b
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acdisasm.h - AML disassembler
|
||||
* $Revision: 9 $
|
||||
* $Revision: 10 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acevents.h - Event subcomponent prototypes and defines
|
||||
* $Revision: 91 $
|
||||
* $Revision: 92 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -255,6 +255,17 @@ AcpiEvDetachRegion (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
BOOLEAN AcpiNsIsLocked);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvExecuteRegMethod (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
UINT32 Function);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvRegRun (
|
||||
ACPI_HANDLE ObjHandle,
|
||||
UINT32 Level,
|
||||
void *Context,
|
||||
void **ReturnValue);
|
||||
|
||||
/*
|
||||
* Evregini - Region initialization and setup
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acexcep.h - Exception codes returned by the ACPI subsystem
|
||||
* $Revision: 68 $
|
||||
* $Revision: 69 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -236,6 +236,7 @@
|
||||
#define AE_AML_NO_RESOURCE_END_TAG (ACPI_STATUS) (0x001E | AE_CODE_AML)
|
||||
#define AE_AML_BAD_RESOURCE_VALUE (ACPI_STATUS) (0x001F | AE_CODE_AML)
|
||||
#define AE_AML_CIRCULAR_REFERENCE (ACPI_STATUS) (0x0020 | AE_CODE_AML)
|
||||
#define AE_AML_BAD_RESOURCE_LENGTH (ACPI_STATUS) (0x0021 | AE_CODE_AML)
|
||||
|
||||
#define AE_CODE_AML_MAX 0x0020
|
||||
|
||||
@ -353,7 +354,8 @@ char const *AcpiGbl_ExceptionNames_Aml[] =
|
||||
"AE_AML_ALIGNMENT",
|
||||
"AE_AML_NO_RESOURCE_END_TAG",
|
||||
"AE_AML_BAD_RESOURCE_VALUE",
|
||||
"AE_AML_CIRCULAR_REFERENCE"
|
||||
"AE_AML_CIRCULAR_REFERENCE",
|
||||
"AE_AML_BAD_RESOURCE_LENGTH"
|
||||
};
|
||||
|
||||
char const *AcpiGbl_ExceptionNames_Ctrl[] =
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acglobal.h - Declarations for global variables
|
||||
* $Revision: 143 $
|
||||
* $Revision: 144 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -179,6 +179,9 @@ ACPI_EXTERN ACPI_COMMON_FACS AcpiGbl_CommonFACS;
|
||||
ACPI_EXTERN UINT8 AcpiGbl_IntegerBitWidth;
|
||||
ACPI_EXTERN UINT8 AcpiGbl_IntegerByteWidth;
|
||||
ACPI_EXTERN UINT8 AcpiGbl_IntegerNybbleWidth;
|
||||
|
||||
/* Keep local copies of these FADT-based registers */
|
||||
|
||||
ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1aEnable;
|
||||
ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1bEnable;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acmacros.h - C macros for the entire subsystem.
|
||||
* $Revision: 145 $
|
||||
* $Revision: 147 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -121,7 +121,6 @@
|
||||
/*
|
||||
* Data manipulation macros
|
||||
*/
|
||||
|
||||
#define ACPI_LOWORD(l) ((UINT16)(UINT32)(l))
|
||||
#define ACPI_HIWORD(l) ((UINT16)((((UINT32)(l)) >> 16) & 0xFFFF))
|
||||
#define ACPI_LOBYTE(l) ((UINT8)(UINT16)(l))
|
||||
@ -167,10 +166,18 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Extract a byte of data using a pointer. Any more than a byte and we
|
||||
* get into potential aligment issues -- see the STORE macros below
|
||||
*/
|
||||
/*
|
||||
* printf() format helpers
|
||||
*/
|
||||
|
||||
/* Split 64-bit integer into two 32-bit values. Use with %8,8X%8.8X */
|
||||
|
||||
#define ACPI_FORMAT_UINT64(i) ACPI_HIDWORD(i),ACPI_LODWORD(i)
|
||||
|
||||
/*
|
||||
* Extract a byte of data using a pointer. Any more than a byte and we
|
||||
* get into potential aligment issues -- see the STORE macros below
|
||||
*/
|
||||
#define ACPI_GET8(addr) (*(UINT8*)(addr))
|
||||
|
||||
/* Pointer arithmetic */
|
||||
@ -202,7 +209,6 @@
|
||||
* If the hardware supports the transfer of unaligned data, just do the store.
|
||||
* Otherwise, we have to move one byte at a time.
|
||||
*/
|
||||
|
||||
#ifdef ACPI_BIG_ENDIAN
|
||||
/*
|
||||
* Macros for big-endian machines
|
||||
@ -372,7 +378,6 @@
|
||||
/*
|
||||
* Fast power-of-two math macros for non-optimized compilers
|
||||
*/
|
||||
|
||||
#define _ACPI_DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2)))
|
||||
#define _ACPI_MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2)))
|
||||
#define _ACPI_MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1)))
|
||||
@ -516,7 +521,6 @@
|
||||
/*
|
||||
* Reporting macros that are never compiled out
|
||||
*/
|
||||
|
||||
#define ACPI_PARAM_LIST(pl) pl
|
||||
|
||||
/*
|
||||
@ -524,7 +528,6 @@
|
||||
* _THIS_MODULE gets compiled out when ACPI_DEBUG_OUTPUT isn't defined, only
|
||||
* use it in debug mode.
|
||||
*/
|
||||
|
||||
#ifdef ACPI_DEBUG_OUTPUT
|
||||
|
||||
#define ACPI_REPORT_INFO(fp) {AcpiUtReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \
|
||||
@ -563,7 +566,6 @@
|
||||
/*
|
||||
* Debug macros that are conditionally compiled
|
||||
*/
|
||||
|
||||
#ifdef ACPI_DEBUG_OUTPUT
|
||||
|
||||
#define ACPI_MODULE_NAME(name) static char ACPI_UNUSED_VAR *_THIS_MODULE = name;
|
||||
@ -573,7 +575,6 @@
|
||||
* The first parameter should be the procedure name as a quoted string. This is declared
|
||||
* as a local string ("_ProcName) so that it can be also used by the function exit macros below.
|
||||
*/
|
||||
|
||||
#define ACPI_FUNCTION_NAME(a) ACPI_DEBUG_PRINT_INFO _Dbg; \
|
||||
_Dbg.ComponentId = _COMPONENT; \
|
||||
_Dbg.ProcName = a; \
|
||||
@ -635,7 +636,6 @@
|
||||
/*
|
||||
* Generate INT3 on ACPI_ERROR (Debug only!)
|
||||
*/
|
||||
|
||||
#define ACPI_ERROR_BREAK
|
||||
#ifdef ACPI_ERROR_BREAK
|
||||
#define ACPI_BREAK_ON_ERROR(lvl) if ((lvl)&ACPI_ERROR) \
|
||||
@ -650,7 +650,6 @@
|
||||
* 1) Debug print for the current component is enabled
|
||||
* 2) Debug error level or trace level for the print statement is enabled
|
||||
*/
|
||||
|
||||
#define ACPI_DEBUG_PRINT(pl) AcpiUtDebugPrint ACPI_PARAM_LIST(pl)
|
||||
#define ACPI_DEBUG_PRINT_RAW(pl) AcpiUtDebugPrintRaw ACPI_PARAM_LIST(pl)
|
||||
|
||||
@ -660,7 +659,6 @@
|
||||
* This is the non-debug case -- make everything go away,
|
||||
* leaving no executable debug code!
|
||||
*/
|
||||
|
||||
#define ACPI_MODULE_NAME(name)
|
||||
#define _THIS_MODULE ""
|
||||
|
||||
@ -735,7 +733,6 @@
|
||||
/*
|
||||
* Memory allocation tracking (DEBUG ONLY)
|
||||
*/
|
||||
|
||||
#ifndef ACPI_DBG_TRACK_ALLOCATIONS
|
||||
|
||||
/* Memory allocation */
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
|
||||
* $Revision: 120 $
|
||||
* $Revision: 122 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -187,7 +187,7 @@
|
||||
#define ACPI_COMMON_NOTIFY_INFO \
|
||||
union acpi_operand_object *SystemNotify; /* Handler for system notifies */\
|
||||
union acpi_operand_object *DeviceNotify; /* Handler for driver notifies */\
|
||||
union acpi_operand_object *AddressSpace; /* Handler for Address space */
|
||||
union acpi_operand_object *Handler; /* Handler for Address space */
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -295,7 +295,7 @@ typedef struct acpi_object_region
|
||||
ACPI_OBJECT_COMMON_HEADER
|
||||
|
||||
UINT8 SpaceId;
|
||||
union acpi_operand_object *AddressSpace; /* Handler for region access */
|
||||
union acpi_operand_object *Handler; /* Handler for region access */
|
||||
ACPI_NAMESPACE_NODE *Node; /* containing object */
|
||||
union acpi_operand_object *Next;
|
||||
UINT32 Length;
|
||||
@ -562,21 +562,22 @@ typedef union acpi_operand_object
|
||||
|
||||
/* Object descriptor types */
|
||||
|
||||
#define ACPI_DESC_TYPE_CACHED 0x11 /* Used only when object is cached */
|
||||
#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_STATE_THREAD 0x29
|
||||
#define ACPI_DESC_TYPE_WALK 0x44
|
||||
#define ACPI_DESC_TYPE_PARSER 0x66
|
||||
#define ACPI_DESC_TYPE_OPERAND 0x88
|
||||
#define ACPI_DESC_TYPE_NAMED 0xAA
|
||||
#define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */
|
||||
#define ACPI_DESC_TYPE_STATE 0x02
|
||||
#define ACPI_DESC_TYPE_STATE_UPDATE 0x03
|
||||
#define ACPI_DESC_TYPE_STATE_PACKAGE 0x04
|
||||
#define ACPI_DESC_TYPE_STATE_CONTROL 0x05
|
||||
#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06
|
||||
#define ACPI_DESC_TYPE_STATE_PSCOPE 0x07
|
||||
#define ACPI_DESC_TYPE_STATE_WSCOPE 0x08
|
||||
#define ACPI_DESC_TYPE_STATE_RESULT 0x09
|
||||
#define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A
|
||||
#define ACPI_DESC_TYPE_STATE_THREAD 0x0B
|
||||
#define ACPI_DESC_TYPE_WALK 0x0C
|
||||
#define ACPI_DESC_TYPE_PARSER 0x0D
|
||||
#define ACPI_DESC_TYPE_OPERAND 0x0E
|
||||
#define ACPI_DESC_TYPE_NAMED 0x0F
|
||||
#define ACPI_DESC_TYPE_MAX 0x0F
|
||||
|
||||
|
||||
typedef union acpi_descriptor
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acstruct.h - Internal structs
|
||||
* $Revision: 25 $
|
||||
* $Revision: 26 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -164,11 +164,12 @@ typedef struct acpi_walk_state
|
||||
struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */
|
||||
union acpi_operand_object **CallerReturnDesc;
|
||||
ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */
|
||||
struct acpi_namespace_node *DeferredNode; /* Used when executing deferred opcodes */
|
||||
struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
|
||||
struct acpi_namespace_node *MethodCallNode; /* Called method Node*/
|
||||
ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */
|
||||
union acpi_operand_object *MethodDesc; /* Method descriptor if running a method */
|
||||
struct acpi_namespace_node *MethodNode; /* Method Node if running a method */
|
||||
struct acpi_namespace_node *MethodNode; /* Method node if running a method. */
|
||||
ACPI_PARSE_OBJECT *Op; /* Current parser op */
|
||||
union acpi_operand_object *Operands[ACPI_OBJ_NUM_OPERANDS+1]; /* Operands passed to the interpreter (+1 for NULL terminator) */
|
||||
const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl.h - Table data structures defined in ACPI specification
|
||||
* $Revision: 59 $
|
||||
* $Revision: 60 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -138,16 +138,6 @@
|
||||
|
||||
#define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */
|
||||
|
||||
/* values of Mapic.Model */
|
||||
|
||||
#define DUAL_PIC 0
|
||||
#define MULTIPLE_APIC 1
|
||||
|
||||
/* values of Type in APIC_HEADER */
|
||||
|
||||
#define APIC_PROC 0
|
||||
#define APIC_IO 1
|
||||
|
||||
|
||||
/*
|
||||
* Common table types. The base code can remain
|
||||
@ -162,8 +152,10 @@
|
||||
#pragma pack(1)
|
||||
|
||||
/*
|
||||
* Architecture-independent tables
|
||||
* The architecture dependent tables are in separate files
|
||||
* ACPI Version-independent tables
|
||||
*
|
||||
* NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
|
||||
* are in separate files.
|
||||
*/
|
||||
typedef struct rsdp_descriptor /* Root System Descriptor Pointer */
|
||||
{
|
||||
@ -180,21 +172,6 @@ typedef struct rsdp_descriptor /* Root System Descriptor Pointer */
|
||||
} RSDP_DESCRIPTOR;
|
||||
|
||||
|
||||
typedef struct acpi_table_header /* ACPI common table header */
|
||||
{
|
||||
char Signature [4]; /* ACPI signature (4 ASCII characters) */
|
||||
UINT32 Length; /* Length of table, in bytes, including header */
|
||||
UINT8 Revision; /* ACPI Specification minor version # */
|
||||
UINT8 Checksum; /* To make sum of entire table == 0 */
|
||||
char OemId [6]; /* OEM identification */
|
||||
char OemTableId [8]; /* OEM table identification */
|
||||
UINT32 OemRevision; /* OEM revision number */
|
||||
char AslCompilerId [4]; /* ASL compiler vendor ID */
|
||||
UINT32 AslCompilerRevision; /* ASL compiler revision number */
|
||||
|
||||
} ACPI_TABLE_HEADER;
|
||||
|
||||
|
||||
typedef struct acpi_common_facs /* Common FACS for internal use */
|
||||
{
|
||||
UINT32 *GlobalLock;
|
||||
@ -204,73 +181,208 @@ typedef struct acpi_common_facs /* Common FACS for internal use */
|
||||
} ACPI_COMMON_FACS;
|
||||
|
||||
|
||||
typedef struct apic_table
|
||||
#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
|
||||
char Signature [4]; /* ACPI signature (4 ASCII characters) */\
|
||||
UINT32 Length; /* Length of table, in bytes, including header */\
|
||||
UINT8 Revision; /* ACPI Specification minor version # */\
|
||||
UINT8 Checksum; /* To make sum of entire table == 0 */\
|
||||
char OemId [6]; /* OEM identification */\
|
||||
char OemTableId [8]; /* OEM table identification */\
|
||||
UINT32 OemRevision; /* OEM revision number */\
|
||||
char AslCompilerId [4]; /* ASL compiler vendor ID */\
|
||||
UINT32 AslCompilerRevision; /* ASL compiler revision number */
|
||||
|
||||
|
||||
typedef struct acpi_table_header /* ACPI common table header */
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* ACPI table header */
|
||||
UINT32 LocalApicAddress; /* Physical address for accessing local APICs */
|
||||
UINT32_BIT PCATCompat : 1; /* a one indicates system also has dual 8259s */
|
||||
ACPI_TABLE_HEADER_DEF
|
||||
|
||||
} ACPI_TABLE_HEADER;
|
||||
|
||||
|
||||
/*
|
||||
* MADT values and structures
|
||||
*/
|
||||
|
||||
/* Values for MADT PCATCompat */
|
||||
|
||||
#define DUAL_PIC 0
|
||||
#define MULTIPLE_APIC 1
|
||||
|
||||
|
||||
/* Master MADT */
|
||||
|
||||
typedef struct multiple_apic_table
|
||||
{
|
||||
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
|
||||
UINT32 LocalApicAddress; /* Physical address of local APIC */
|
||||
UINT32_BIT PCATCompat : 1; /* A one indicates system also has dual 8259s */
|
||||
UINT32_BIT Reserved1 : 31;
|
||||
|
||||
} APIC_TABLE;
|
||||
} MULTIPLE_APIC_TABLE;
|
||||
|
||||
|
||||
typedef struct apic_header
|
||||
/* Values for Type in APIC_HEADER_DEF */
|
||||
|
||||
#define APIC_PROCESSOR 0
|
||||
#define APIC_IO 1
|
||||
#define APIC_XRUPT_OVERRIDE 2
|
||||
#define APIC_NMI 3
|
||||
#define APIC_LOCAL_NMI 4
|
||||
#define APIC_ADDRESS_OVERRIDE 5
|
||||
#define APIC_IO_SAPIC 6
|
||||
#define APIC_LOCAL_SAPIC 7
|
||||
#define APIC_XRUPT_SOURCE 8
|
||||
#define APIC_RESERVED 9 /* 9 and greater are reserved */
|
||||
|
||||
/*
|
||||
* MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
|
||||
*/
|
||||
#define APIC_HEADER_DEF /* Common APIC sub-structure header */\
|
||||
UINT8 Type; \
|
||||
UINT8 Length;
|
||||
|
||||
/* Values for MPS INTI flags */
|
||||
|
||||
#define POLARITY_CONFORMS 0
|
||||
#define POLARITY_ACTIVE_HIGH 1
|
||||
#define POLARITY_RESERVED 2
|
||||
#define POLARITY_ACTIVE_LOW 3
|
||||
|
||||
#define TRIGGER_CONFORMS 0
|
||||
#define TRIGGER_EDGE 1
|
||||
#define TRIGGER_RESERVED 2
|
||||
#define TRIGGER_LEVEL 3
|
||||
|
||||
/* Common flag definitions */
|
||||
|
||||
#define MPS_INTI_FLAGS \
|
||||
UINT16_BIT Polarity : 2; /* Polarity of APIC I/O input signals */\
|
||||
UINT16_BIT TriggerMode : 2; /* Trigger mode of APIC input signals */\
|
||||
UINT16_BIT Reserved1 : 12; /* Reserved, must be zero */
|
||||
|
||||
#define LOCAL_APIC_FLAGS \
|
||||
UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */\
|
||||
UINT32_BIT Reserved2 : 31; /* Reserved, must be zero */
|
||||
|
||||
/* Sub-structures for MADT */
|
||||
|
||||
typedef struct madt_processor_apic
|
||||
{
|
||||
UINT8 Type; /* APIC type. Either APIC_PROC or APIC_IO */
|
||||
UINT8 Length; /* Length of APIC structure */
|
||||
|
||||
} APIC_HEADER;
|
||||
|
||||
|
||||
typedef struct processor_apic
|
||||
{
|
||||
APIC_HEADER Header;
|
||||
UINT8 ProcessorApicId; /* ACPI processor id */
|
||||
APIC_HEADER_DEF
|
||||
UINT8 ProcessorId; /* ACPI processor id */
|
||||
UINT8 LocalApicId; /* Processor's local APIC id */
|
||||
UINT32_BIT ProcessorEnabled: 1; /* Processor is usable if set */
|
||||
UINT32_BIT Reserved1 : 31;
|
||||
LOCAL_APIC_FLAGS
|
||||
|
||||
} PROCESSOR_APIC;
|
||||
} MADT_PROCESSOR_APIC;
|
||||
|
||||
|
||||
typedef struct io_apic
|
||||
typedef struct madt_io_apic
|
||||
{
|
||||
APIC_HEADER Header;
|
||||
APIC_HEADER_DEF
|
||||
UINT8 IoApicId; /* I/O APIC ID */
|
||||
UINT8 Reserved; /* Reserved - must be zero */
|
||||
UINT32 IoApicAddress; /* APIC's physical address */
|
||||
UINT32 Vector; /* Interrupt vector index where INTI
|
||||
UINT32 Address; /* APIC physical address */
|
||||
UINT32 Interrupt; /* Global system interrupt where INTI
|
||||
* lines start */
|
||||
} IO_APIC;
|
||||
} MADT_IO_APIC;
|
||||
|
||||
|
||||
/*
|
||||
* IA64 TBD: Add SAPIC Tables
|
||||
*/
|
||||
|
||||
/*
|
||||
* IA64 TBD: Modify Smart Battery Description to comply with ACPI IA64
|
||||
* extensions.
|
||||
*/
|
||||
typedef struct smart_battery_description_table
|
||||
typedef struct madt_interrupt_override
|
||||
{
|
||||
ACPI_TABLE_HEADER Header;
|
||||
APIC_HEADER_DEF
|
||||
UINT8 Bus; /* 0 - ISA */
|
||||
UINT8 Source; /* Interrupt source (IRQ) */
|
||||
UINT32 Interrupt; /* Global system interrupt */
|
||||
MPS_INTI_FLAGS
|
||||
|
||||
} MADT_INTERRUPT_OVERRIDE;
|
||||
|
||||
typedef struct madt_nmi_source
|
||||
{
|
||||
APIC_HEADER_DEF
|
||||
MPS_INTI_FLAGS
|
||||
UINT32 Interrupt; /* Global system interrupt */
|
||||
|
||||
} MADT_NMI_SOURCE;
|
||||
|
||||
typedef struct madt_local_apic_nmi
|
||||
{
|
||||
APIC_HEADER_DEF
|
||||
UINT8 ProcessorId; /* ACPI processor id */
|
||||
MPS_INTI_FLAGS
|
||||
UINT8 Lint; /* LINTn to which NMI is connected */
|
||||
|
||||
} MADT_LOCAL_APIC_NMI;
|
||||
|
||||
typedef struct madt_address_override
|
||||
{
|
||||
APIC_HEADER_DEF
|
||||
UINT16 Reserved; /* Reserved - must be zero */
|
||||
UINT32 Address; /* APIC physical address */
|
||||
|
||||
} MADT_ADDRESS_OVERRIDE;
|
||||
|
||||
typedef struct madt_io_sapic
|
||||
{
|
||||
APIC_HEADER_DEF
|
||||
UINT8 IoSapicId; /* I/O SAPIC ID */
|
||||
UINT8 Reserved; /* Reserved - must be zero */
|
||||
UINT32 InterruptBase; /* Glocal interrupt for SAPIC start */
|
||||
UINT64 Address; /* SAPIC physical address */
|
||||
|
||||
} MADT_IO_SAPIC;
|
||||
|
||||
typedef struct madt_local_sapic
|
||||
{
|
||||
APIC_HEADER_DEF
|
||||
UINT8 ProcessorId; /* ACPI processor id */
|
||||
UINT8 LocalSapicId; /* SAPIC ID */
|
||||
UINT8 LocalSapicEid; /* SAPIC EID */
|
||||
UINT8 Reserved [3]; /* Reserved - must be zero */
|
||||
LOCAL_APIC_FLAGS
|
||||
|
||||
} MADT_LOCAL_SAPIC;
|
||||
|
||||
typedef struct madt_interrupt_source
|
||||
{
|
||||
APIC_HEADER_DEF
|
||||
MPS_INTI_FLAGS
|
||||
UINT8 InterruptType; /* 1=PMI, 2=INIT, 3=corrected */
|
||||
UINT8 ProcessorId; /* Processor ID */
|
||||
UINT8 ProcessorEid; /* Processor EID */
|
||||
UINT8 IoSapicVector; /* Vector value for PMI interrupts */
|
||||
UINT32 Interrupt; /* Global system interrupt */
|
||||
UINT32 Reserved; /* Reserved - must be zero */
|
||||
|
||||
} MADT_INTERRUPT_SOURCE;
|
||||
|
||||
|
||||
/*
|
||||
* Smart Battery
|
||||
*/
|
||||
typedef struct smart_battery_table
|
||||
{
|
||||
ACPI_TABLE_HEADER_DEF
|
||||
UINT32 WarningLevel;
|
||||
UINT32 LowLevel;
|
||||
UINT32 CriticalLevel;
|
||||
|
||||
} SMART_BATTERY_DESCRIPTION_TABLE;
|
||||
} SMART_BATTERY_TABLE;
|
||||
|
||||
typedef struct hpet_description_table
|
||||
|
||||
/*
|
||||
* High performance timer
|
||||
*/
|
||||
typedef struct hpet_table
|
||||
{
|
||||
ACPI_TABLE_HEADER Header;
|
||||
ACPI_TABLE_HEADER_DEF
|
||||
UINT32 HardwareId;
|
||||
UINT32 BaseAddress[3];
|
||||
UINT32 BaseAddress [3];
|
||||
UINT8 HpetNumber;
|
||||
UINT16 ClockTick;
|
||||
UINT8 Attributes;
|
||||
|
||||
} HPET_DESCRIPTION_TABLE;
|
||||
} HPET_TABLE;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
@ -309,9 +421,10 @@ typedef struct acpi_table_support
|
||||
|
||||
|
||||
/*
|
||||
* Get the architecture-specific tables
|
||||
* Get the ACPI version-specific tables
|
||||
*/
|
||||
#include "actbl1.h" /* Acpi 1.0 table definitions */
|
||||
#include "actbl2.h" /* Acpi 2.0 table definitions */
|
||||
|
||||
|
||||
#endif /* __ACTBL_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl1.h - ACPI 1.0 tables
|
||||
* $Revision: 26 $
|
||||
* $Revision: 27 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -124,7 +124,7 @@
|
||||
*/
|
||||
typedef struct rsdt_descriptor_rev1
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* ACPI Table header */
|
||||
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
|
||||
UINT32 TableOffsetEntry [1]; /* Array of pointers to other */
|
||||
/* ACPI tables */
|
||||
} RSDT_DESCRIPTOR_REV1;
|
||||
@ -152,7 +152,7 @@ typedef struct facs_descriptor_rev1
|
||||
*/
|
||||
typedef struct fadt_descriptor_rev1
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* ACPI Table header */
|
||||
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
|
||||
UINT32 FirmwareCtrl; /* Physical address of FACS */
|
||||
UINT32 Dsdt; /* Physical address of DSDT */
|
||||
UINT8 Model; /* System Interrupt Model */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actbl2.h - ACPI Specification Revision 2.0 Tables
|
||||
* $Revision: 32 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -144,7 +144,7 @@
|
||||
*/
|
||||
typedef struct rsdt_descriptor_rev2
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* ACPI table header */
|
||||
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
|
||||
UINT32 TableOffsetEntry [1]; /* Array of pointers to */
|
||||
/* ACPI table headers */
|
||||
} RSDT_DESCRIPTOR_REV2;
|
||||
@ -155,7 +155,7 @@ typedef struct rsdt_descriptor_rev2
|
||||
*/
|
||||
typedef struct xsdt_descriptor_rev2
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* ACPI table header */
|
||||
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
|
||||
UINT64 TableOffsetEntry [1]; /* Array of pointers to */
|
||||
/* ACPI table headers */
|
||||
} XSDT_DESCRIPTOR_REV2;
|
||||
@ -199,7 +199,7 @@ typedef struct acpi_generic_address
|
||||
*/
|
||||
typedef struct fadt_descriptor_rev2
|
||||
{
|
||||
ACPI_TABLE_HEADER Header; /* ACPI table header */
|
||||
ACPI_TABLE_HEADER_DEF /* ACPI common table header */
|
||||
UINT32 V1_FirmwareCtrl; /* 32-bit physical address of FACS */
|
||||
UINT32 V1_Dsdt; /* 32-bit physical address of DSDT */
|
||||
UINT8 Reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/
|
||||
@ -271,6 +271,21 @@ typedef struct fadt_descriptor_rev2
|
||||
} FADT_DESCRIPTOR_REV2;
|
||||
|
||||
|
||||
/* Embedded Controller */
|
||||
|
||||
typedef struct ec_boot_resources
|
||||
{
|
||||
ACPI_TABLE_HEADER_DEF
|
||||
ACPI_GENERIC_ADDRESS EcControl; /* Address of EC command/status register */
|
||||
ACPI_GENERIC_ADDRESS EcData; /* Address of EC data register */
|
||||
UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
|
||||
UINT8 GpeBit; /* The GPE for the EC */
|
||||
UINT8 EcId[1]; /* Full namepath of the EC in the ACPI namespace */
|
||||
|
||||
} EC_BOOT_RESOURCES;
|
||||
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* __ACTBL2_H__ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: actypes.h - Common data types for the entire ACPI subsystem
|
||||
* $Revision: 261 $
|
||||
* $Revision: 262 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -281,6 +281,7 @@ typedef UINT32 ACPI_SIZE;
|
||||
/*
|
||||
* Miscellaneous common types
|
||||
*/
|
||||
typedef UINT16 UINT16_BIT;
|
||||
typedef UINT32 UINT32_BIT;
|
||||
typedef ACPI_NATIVE_UINT ACPI_PTRDIFF;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: adisasm - Application-level disassembler routines
|
||||
* $Revision: 58 $
|
||||
* $Revision: 63 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -521,12 +521,16 @@ AdAmlDisassemble (
|
||||
if (!OutFilename)
|
||||
{
|
||||
fprintf (stderr, "Could not generate output filename\n");
|
||||
Status = AE_ERROR;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
File = fopen (DisasmFilename, "w+");
|
||||
if (!File)
|
||||
{
|
||||
fprintf (stderr, "Could not open output file\n");
|
||||
Status = AE_ERROR;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
AcpiOsRedirectOutput (File);
|
||||
@ -560,7 +564,7 @@ Cleanup:
|
||||
}
|
||||
|
||||
AcpiPsDeleteParseTree (AcpiGbl_ParsedNamespaceRoot);
|
||||
return AE_OK;
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
@ -593,7 +597,7 @@ AdCreateTableHeader (
|
||||
AcpiOsPrintf (" *\n * Disassembly of %s, %s */\n", Filename, ctime (&Timer));
|
||||
|
||||
AcpiOsPrintf (
|
||||
"DefinitionBlock (\"%4.4s.aml\", \"%4.4s\", %hd, \"%.6s\", \"%.8s\", %d)\n",
|
||||
"DefinitionBlock (\"%4.4s.aml\", \"%4.4s\", %hd, \"%.6s\", \"%.8s\", %u)\n",
|
||||
Table->Signature, Table->Signature, Table->Revision,
|
||||
Table->OemId, Table->OemTableId, Table->OemRevision);
|
||||
}
|
||||
@ -869,12 +873,17 @@ AdGetLocalTables (
|
||||
|
||||
if (GetAllTables)
|
||||
{
|
||||
ACPI_STRNCPY (TableHeader.Signature, "RSDT", 4);
|
||||
ACPI_STRNCPY (TableHeader.Signature, RSDT_SIG, 4);
|
||||
AcpiOsTableOverride (&TableHeader, &NewTable);
|
||||
if (!NewTable)
|
||||
{
|
||||
fprintf (stderr, "Could not obtain RSDT\n");
|
||||
return AE_NO_ACPI_TABLES;
|
||||
}
|
||||
|
||||
#if ACPI_MACHINE_WIDTH != 64
|
||||
|
||||
if (!ACPI_STRNCMP (NewTable->Signature, "RSDT", 4))
|
||||
if (!ACPI_STRNCMP (NewTable->Signature, RSDT_SIG, 4))
|
||||
{
|
||||
PointerSize = sizeof (UINT32);
|
||||
}
|
||||
@ -896,25 +905,25 @@ AdGetLocalTables (
|
||||
|
||||
/* Get the FADT */
|
||||
|
||||
ACPI_STRNCPY (TableHeader.Signature, "FADT", 4);
|
||||
ACPI_STRNCPY (TableHeader.Signature, FADT_SIG, 4);
|
||||
AcpiOsTableOverride (&TableHeader, &NewTable);
|
||||
if (NewTable)
|
||||
{
|
||||
AcpiGbl_FADT = (void *) NewTable;
|
||||
AdWriteTable (NewTable, NewTable->Length,
|
||||
"FADT", NewTable->OemTableId);
|
||||
FADT_SIG, NewTable->OemTableId);
|
||||
}
|
||||
AcpiOsPrintf ("\n");
|
||||
|
||||
/* Get the FACS */
|
||||
|
||||
ACPI_STRNCPY (TableHeader.Signature, "FACS", 4);
|
||||
ACPI_STRNCPY (TableHeader.Signature, FACS_SIG, 4);
|
||||
AcpiOsTableOverride (&TableHeader, &NewTable);
|
||||
if (NewTable)
|
||||
{
|
||||
AcpiGbl_FACS = (void *) NewTable;
|
||||
AdWriteTable (NewTable, AcpiGbl_FACS->Length,
|
||||
"FACS", AcpiGbl_FADT->Header.OemTableId);
|
||||
FACS_SIG, AcpiGbl_FADT->OemTableId);
|
||||
}
|
||||
AcpiOsPrintf ("\n");
|
||||
}
|
||||
@ -933,7 +942,7 @@ AdGetLocalTables (
|
||||
else
|
||||
{
|
||||
fprintf (stderr, "Could not obtain DSDT\n");
|
||||
Status = AE_NO_ACPI_TABLES;
|
||||
return AE_NO_ACPI_TABLES;
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: aslanalyze.c - check for semantic errors
|
||||
* $Revision: 77 $
|
||||
* $Revision: 79 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -890,6 +890,15 @@ AnMethodAnalysisWalkBegin (
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_STALL:
|
||||
|
||||
if (Op->Asl.Child->Asl.Value.Integer > ACPI_UINT8_MAX)
|
||||
{
|
||||
AslError (ASL_ERROR, ASL_MSG_INVALID_TIME, Op, NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_DEVICE:
|
||||
case PARSEOP_EVENT:
|
||||
case PARSEOP_MUTEX:
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: aslcompile - top level compile module
|
||||
* $Revision: 69 $
|
||||
* $Revision: 72 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -179,7 +179,7 @@ AslCompilerSignon (
|
||||
/* Compiler signon with copyright */
|
||||
|
||||
FlPrintFile (FileId,
|
||||
"%s\n%s%s\n%s%s version %X [%s]\n%s%s\n%sSupports ACPI Specification Revision 2.0b\n%s\n",
|
||||
"%s\n%s%s\n%s%s version %X [%s]\n%s%s\n%sSupports ACPI Specification Revision 2.0c\n%s\n",
|
||||
Prefix,
|
||||
Prefix, IntelAcpiCA,
|
||||
Prefix, CompilerId, ACPI_CA_VERSION, __DATE__,
|
||||
@ -296,6 +296,60 @@ CmFlushSourceCode (void)
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: FlCheckForAscii
|
||||
*
|
||||
* PARAMETERS: FileInfo - Points to an open input file
|
||||
*
|
||||
* RETURN: Status (0 = OK)
|
||||
*
|
||||
* DESCRIPTION: Verify that the input file is entirely ASCII.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
FlCheckForAscii (
|
||||
ASL_FILE_INFO *FileInfo)
|
||||
{
|
||||
UINT8 Byte;
|
||||
ACPI_SIZE BadBytes = 0;
|
||||
ACPI_SIZE Offset = 0;
|
||||
|
||||
|
||||
/* Read the entire file */
|
||||
|
||||
while (fread (&Byte, 1, 1, FileInfo->Handle))
|
||||
{
|
||||
/* Check for an ASCII character */
|
||||
|
||||
if (!isascii (Byte))
|
||||
{
|
||||
if (BadBytes < 10)
|
||||
{
|
||||
AcpiOsPrintf ("Non-ASCII character: 0x%2.2X at offset 0x%X\n", Byte, Offset);
|
||||
}
|
||||
BadBytes++;
|
||||
}
|
||||
Offset++;
|
||||
}
|
||||
|
||||
/* Were there any non-ASCII characters in the file? */
|
||||
|
||||
if (BadBytes)
|
||||
{
|
||||
AcpiOsPrintf ("%d non-ASCII characters found in input file, appears to be binary\n", BadBytes);
|
||||
AslError (ASL_ERROR, ASL_MSG_NON_ASCII, NULL, FileInfo->Filename);
|
||||
return (AE_BAD_CHARACTER);
|
||||
}
|
||||
|
||||
/* File is OK, seek back to the beginning */
|
||||
|
||||
fseek (FileInfo->Handle, 0, SEEK_SET);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: CmDoCompile
|
||||
@ -327,6 +381,15 @@ CmDoCompile (void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Ensure that the input file is 100% ASCII text */
|
||||
|
||||
Status = FlCheckForAscii (&Gbl_Files[ASL_FILE_INPUT]);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AePrintErrorLog (ASL_FILE_STDERR);
|
||||
return -1;
|
||||
}
|
||||
|
||||
Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
|
@ -177,6 +177,9 @@ AslLocalAllocate (unsigned int Size);
|
||||
|
||||
/*
|
||||
* Token types: These are returned by the lexer
|
||||
*
|
||||
* NOTE: This list MUST match the AslKeywordMapping table found
|
||||
* in aslmap.c EXACTLY! Double check any changes!
|
||||
*/
|
||||
|
||||
%token <i> PARSEOP_ACCESSAS
|
||||
@ -187,7 +190,6 @@ AslLocalAllocate (unsigned int Size);
|
||||
%token <i> PARSEOP_ACCESSATTRIB_QUICK
|
||||
%token <i> PARSEOP_ACCESSATTRIB_SND_RCV
|
||||
%token <i> PARSEOP_ACCESSATTRIB_WORD
|
||||
%token <i> PARSEOP_ACCESSATTRIB_WORD_CALL
|
||||
%token <i> PARSEOP_ACCESSTYPE_ANY
|
||||
%token <i> PARSEOP_ACCESSTYPE_BUF
|
||||
%token <i> PARSEOP_ACCESSTYPE_BYTE
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: aslfold - Constant folding
|
||||
* $Revision: 7 $
|
||||
* $Revision: 8 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -461,8 +461,7 @@ OpcAmlConstantWalk (
|
||||
OpcSetOptimalIntegerSize (Op);
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "Constant expression reduced to (INTEGER) %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD (ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: asltree - parse tree management
|
||||
* $Revision: 53 $
|
||||
* $Revision: 54 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -488,7 +488,7 @@ TrCreateValuedLeafNode (
|
||||
DbgPrint (ASL_PARSE_OUTPUT,
|
||||
"\nCreateValuedLeafNode Line %d NewNode %p Op %s Value %8.8X%8.8X ",
|
||||
Op->Asl.LineNumber, Op, UtGetOpName(ParseOpcode),
|
||||
ACPI_HIDWORD (Value), ACPI_LODWORD (Value));
|
||||
ACPI_FORMAT_UINT64 (Value));
|
||||
Op->Asl.Value.Integer = Value;
|
||||
|
||||
switch (ParseOpcode)
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: asltypes.h - compiler data types and struct definitions
|
||||
* $Revision: 59 $
|
||||
* $Revision: 61 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -385,7 +385,9 @@ typedef enum
|
||||
ASL_MSG_CORE_EXCEPTION,
|
||||
ASL_MSG_UNREACHABLE_CODE,
|
||||
ASL_MSG_EARLY_EOF,
|
||||
ASL_MSG_SCOPE_FWD_REF
|
||||
ASL_MSG_SCOPE_FWD_REF,
|
||||
ASL_MSG_NON_ASCII,
|
||||
ASL_MSG_INVALID_TIME
|
||||
|
||||
} ASL_MESSAGE_IDS;
|
||||
|
||||
@ -473,7 +475,10 @@ char *AslMessages [] = {
|
||||
/* ASL_MSG_CORE_EXCEPTION, */ "From ACPI CA Subsystem",
|
||||
/* ASL_MSG_UNREACHABLE_CODE, */ "Statement is unreachable",
|
||||
/* ASL_MSG_EARLY_EOF */ "Premature end-of-file reached",
|
||||
/* ASL_MSG_SCOPE_FWD_REF */ "Forward references from Scope() not allowed"
|
||||
/* ASL_MSG_SCOPE_FWD_REF */ "Forward references from Scope() not allowed",
|
||||
/* ASL_MSG_NON_ASCII */ "Invalid characters found in file",
|
||||
/* ASL_MSG_INVALID_TIME */ "Time parameter too long (255 max)"
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -126,7 +126,7 @@
|
||||
|
||||
#ifdef _USE_BERKELEY_YACC
|
||||
extern const char * const AslCompilername[];
|
||||
static const char * const *yytname = &AslCompilername[254];
|
||||
static const char * const *yytname = &AslCompilername[255];
|
||||
#else
|
||||
extern const char * const yytname[];
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbdisply - debug display commands
|
||||
* $Revision: 95 $
|
||||
* $Revision: 98 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -433,8 +433,10 @@ AcpiDbDisplayMethodInfo (
|
||||
NumArgs = ObjDesc->Method.ParamCount;
|
||||
Concurrency = ObjDesc->Method.Concurrency;
|
||||
|
||||
AcpiOsPrintf ("Currently executing control method is [%4.4s]\n", Node->Name.Ascii);
|
||||
AcpiOsPrintf ("%X arguments, max concurrency = %X\n", NumArgs, Concurrency);
|
||||
AcpiOsPrintf ("Currently executing control method is [%4.4s]\n",
|
||||
AcpiUtGetNodeName (Node));
|
||||
AcpiOsPrintf ("%X arguments, max concurrency = %X\n",
|
||||
NumArgs, Concurrency);
|
||||
|
||||
|
||||
RootOp = StartOp;
|
||||
@ -586,7 +588,7 @@ AcpiDbDisplayResults (void)
|
||||
}
|
||||
|
||||
ObjDesc = WalkState->MethodDesc;
|
||||
Node = WalkState->MethodNode;
|
||||
Node = WalkState->MethodNode;
|
||||
|
||||
if (WalkState->Results)
|
||||
{
|
||||
@ -594,7 +596,7 @@ AcpiDbDisplayResults (void)
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("Method [%4.4s] has %X stacked result objects\n",
|
||||
Node->Name.Ascii, NumResults);
|
||||
AcpiUtGetNodeName (Node), NumResults);
|
||||
|
||||
for (i = 0; i < NumResults; i++)
|
||||
{
|
||||
@ -638,7 +640,7 @@ AcpiDbDisplayCallingTree (void)
|
||||
{
|
||||
Node = WalkState->MethodNode;
|
||||
|
||||
AcpiOsPrintf (" [%4.4s]\n", Node->Name.Ascii);
|
||||
AcpiOsPrintf (" [%4.4s]\n", AcpiUtGetNodeName (Node));
|
||||
|
||||
WalkState = WalkState->Next;
|
||||
}
|
||||
@ -649,11 +651,11 @@ AcpiDbDisplayCallingTree (void)
|
||||
*
|
||||
* FUNCTION: AcpiDbDisplayObjectType
|
||||
*
|
||||
* PARAMETERS: None
|
||||
* PARAMETERS: ObjectArg - User entered NS node handle
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Display current calling tree of nested control methods
|
||||
* DESCRIPTION: Display type of an arbitrary NS node
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -677,7 +679,7 @@ AcpiDbDisplayObjectType (
|
||||
Info = Buffer.Pointer;
|
||||
AcpiOsPrintf ("HID: %s, ADR: %8.8X%8.8X, Status %8.8X\n",
|
||||
&Info->HardwareId,
|
||||
ACPI_HIDWORD (Info->Address), ACPI_LODWORD (Info->Address),
|
||||
ACPI_FORMAT_UINT64 (Info->Address),
|
||||
Info->CurrentStatus);
|
||||
|
||||
if (Info->Valid & ACPI_VALID_CID)
|
||||
@ -694,7 +696,6 @@ AcpiDbDisplayObjectType (
|
||||
{
|
||||
AcpiOsPrintf ("%s\n", AcpiFormatException (Status));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -767,11 +768,11 @@ AcpiDbDisplayArgumentObject (
|
||||
*
|
||||
* FUNCTION: AcpiDbDisplayGpes
|
||||
*
|
||||
* PARAMETERS:
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Display the GPE structures
|
||||
* DESCRIPTION: Display the current GPE structures
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbexec - debugger control method execution
|
||||
* $Revision: 54 $
|
||||
* $Revision: 55 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -329,8 +329,8 @@ AcpiDbExecutionWalk (
|
||||
|
||||
Status = AcpiEvaluateObject (Node, NULL, NULL, &ReturnObj);
|
||||
|
||||
AcpiOsPrintf ("[%4.4s] returned %s\n", Node->Name.Ascii,
|
||||
AcpiFormatException (Status));
|
||||
AcpiOsPrintf ("[%4.4s] returned %s\n", AcpiUtGetNodeName (Node),
|
||||
AcpiFormatException (Status));
|
||||
AcpiGbl_MethodExecuting = FALSE;
|
||||
|
||||
return (AE_OK);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbstats - Generation and display of ACPI table statistics
|
||||
* $Revision: 68 $
|
||||
* $Revision: 69 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -204,7 +204,7 @@ AcpiDbEnumerateObject (
|
||||
|
||||
AcpiDbEnumerateObject (ObjDesc->Device.SystemNotify);
|
||||
AcpiDbEnumerateObject (ObjDesc->Device.DeviceNotify);
|
||||
AcpiDbEnumerateObject (ObjDesc->Device.AddressSpace);
|
||||
AcpiDbEnumerateObject (ObjDesc->Device.Handler);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
@ -218,7 +218,7 @@ AcpiDbEnumerateObject (
|
||||
case ACPI_TYPE_REGION:
|
||||
|
||||
AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++;
|
||||
AcpiDbEnumerateObject (ObjDesc->Region.AddressSpace);
|
||||
AcpiDbEnumerateObject (ObjDesc->Region.Handler);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_POWER:
|
||||
@ -231,14 +231,14 @@ AcpiDbEnumerateObject (
|
||||
|
||||
AcpiDbEnumerateObject (ObjDesc->Processor.SystemNotify);
|
||||
AcpiDbEnumerateObject (ObjDesc->Processor.DeviceNotify);
|
||||
AcpiDbEnumerateObject (ObjDesc->Processor.AddressSpace);
|
||||
AcpiDbEnumerateObject (ObjDesc->Processor.Handler);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_THERMAL:
|
||||
|
||||
AcpiDbEnumerateObject (ObjDesc->ThermalZone.SystemNotify);
|
||||
AcpiDbEnumerateObject (ObjDesc->ThermalZone.DeviceNotify);
|
||||
AcpiDbEnumerateObject (ObjDesc->ThermalZone.AddressSpace);
|
||||
AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dbutils - AML debugger utilities
|
||||
* $Revision: 64 $
|
||||
* $Revision: 65 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -268,8 +268,7 @@ AcpiDbDumpObject (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD (ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dmobject - ACPI object decode and display
|
||||
* $Revision: 1 $
|
||||
* $Revision: 6 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -119,6 +119,7 @@
|
||||
#include "amlcode.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acdisasm.h"
|
||||
#include "acparser.h"
|
||||
|
||||
|
||||
#ifdef ACPI_DISASSEMBLER
|
||||
@ -127,7 +128,6 @@
|
||||
ACPI_MODULE_NAME ("dmnames")
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDmDumpMethodInfo
|
||||
@ -163,6 +163,14 @@ AcpiDmDumpMethodInfo (
|
||||
return;
|
||||
}
|
||||
|
||||
/* We may be executing a deferred opcode */
|
||||
|
||||
if (WalkState->DeferredNode)
|
||||
{
|
||||
AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Display exception and method name */
|
||||
|
||||
AcpiOsPrintf ("\n**** Exception %s during execution of method ",
|
||||
@ -180,7 +188,7 @@ AcpiDmDumpMethodInfo (
|
||||
while (NextWalkState)
|
||||
{
|
||||
AcpiOsPrintf (" Method [%4.4s] executing: ",
|
||||
NextWalkState->MethodNode->Name.Ascii);
|
||||
AcpiUtGetNodeName (NextWalkState->MethodNode));
|
||||
|
||||
/* First method is the currently executing method */
|
||||
|
||||
@ -247,7 +255,7 @@ AcpiDmDecodeInternalObject (
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
|
||||
{
|
||||
AcpiOsPrintf (" %p", ObjDesc);
|
||||
AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -257,8 +265,8 @@ AcpiDmDecodeInternalObject (
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf (" %8.8X%8.8X", ACPI_HIDWORD (ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD (ObjDesc->Integer.Value));
|
||||
AcpiOsPrintf (" %8.8X%8.8X",
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
@ -315,7 +323,7 @@ AcpiDmDecodeNode (
|
||||
|
||||
|
||||
AcpiOsPrintf ("<Node> Name %4.4s",
|
||||
Node->Name.Ascii);
|
||||
AcpiUtGetNodeName (Node));
|
||||
|
||||
if (Node->Flags & ANOBJ_METHOD_ARG)
|
||||
{
|
||||
@ -436,7 +444,13 @@ AcpiDmDisplayInternalObject (
|
||||
break;
|
||||
|
||||
|
||||
case AML_REF_OF_OP:
|
||||
case AML_LOAD_OP:
|
||||
|
||||
AcpiOsPrintf ("[DdbHandle] ");
|
||||
break;
|
||||
|
||||
|
||||
case AML_REF_OF_OP:
|
||||
|
||||
AcpiOsPrintf ("[RefOf] ");
|
||||
|
||||
@ -460,8 +474,9 @@ AcpiDmDisplayInternalObject (
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("Unknown Reference opcode %X\n",
|
||||
ObjDesc->Reference.Opcode);
|
||||
AcpiOsPrintf ("Unknown Reference opcode %X (%s)\n",
|
||||
ObjDesc->Reference.Opcode,
|
||||
AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -478,7 +493,8 @@ AcpiDmDisplayInternalObject (
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> ");
|
||||
AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> [%s]",
|
||||
AcpiUtGetDescriptorName (ObjDesc));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -508,14 +524,21 @@ AcpiDmDisplayLocals (
|
||||
|
||||
|
||||
ObjDesc = WalkState->MethodDesc;
|
||||
Node = WalkState->MethodNode;
|
||||
Node = WalkState->MethodNode;
|
||||
if (!Node)
|
||||
{
|
||||
AcpiOsPrintf ("No method node (Executing subtree for buffer or opregion)\n");
|
||||
return;
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", Node->Name.Ascii);
|
||||
if (Node->Type != ACPI_TYPE_METHOD)
|
||||
{
|
||||
AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");
|
||||
return;
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("Local Variables for method [%4.4s]:\n",
|
||||
AcpiUtGetNodeName (Node));
|
||||
|
||||
for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++)
|
||||
{
|
||||
@ -557,11 +580,17 @@ AcpiDmDisplayArguments (
|
||||
return;
|
||||
}
|
||||
|
||||
if (Node->Type != ACPI_TYPE_METHOD)
|
||||
{
|
||||
AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n");
|
||||
return;
|
||||
}
|
||||
|
||||
NumArgs = ObjDesc->Method.ParamCount;
|
||||
Concurrency = ObjDesc->Method.Concurrency;
|
||||
|
||||
AcpiOsPrintf ("Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n",
|
||||
Node->Name.Ascii, NumArgs, Concurrency);
|
||||
AcpiUtGetNodeName (Node), NumArgs, Concurrency);
|
||||
|
||||
for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
|
||||
{
|
||||
@ -574,7 +603,3 @@ AcpiDmDisplayArguments (
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dmresrc.c - Resource Descriptor disassembly
|
||||
* $Revision: 8 $
|
||||
* $Revision: 10 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -134,7 +134,7 @@
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Dump a bit mask as a list of individual interrupt/dma levels.
|
||||
* DESCRIPTION: Dump a bit mask as a list of individual interrupt/DMA levels.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly
|
||||
* $Revision: 10 $
|
||||
* $Revision: 11 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -358,28 +358,23 @@ AcpiDmQwordDescriptor (
|
||||
AcpiOsPrintf ("\n");
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X,\n",
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->Granularity)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->Granularity)));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Resource->Granularity)));
|
||||
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X,\n",
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->AddressMin)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->AddressMin)));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Resource->AddressMin)));
|
||||
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X,\n",
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->AddressMax)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->AddressMax)));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Resource->AddressMax)));
|
||||
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X,\n",
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->TranslationOffset)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->TranslationOffset)));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Resource->TranslationOffset)));
|
||||
|
||||
AcpiDmIndent (Level + 1);
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X",
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->AddressLength)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->AddressLength)));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Resource->AddressLength)));
|
||||
|
||||
/* Optional fields */
|
||||
|
||||
@ -518,8 +513,7 @@ AcpiDmGenericRegisterDescriptor (
|
||||
AcpiOsPrintf ("0x%2.2X, 0x%2.2X, 0x%8.8X%8.8X)\n",
|
||||
(UINT32) Resource->BitWidth,
|
||||
(UINT32) Resource->BitOffset,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->Address)));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Resource->Address)));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dsfield - Dispatcher field routines
|
||||
* $Revision: 72 $
|
||||
* $Revision: 73 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -182,30 +182,38 @@ AcpiDsCreateBufferField (
|
||||
return_ACPI_STATUS (AE_AML_NO_OPERAND);
|
||||
}
|
||||
|
||||
/*
|
||||
* During the load phase, we want to enter the name of the field into
|
||||
* the namespace. During the execute phase (when we evaluate the size
|
||||
* operand), we want to lookup the name
|
||||
*/
|
||||
if (WalkState->ParseFlags & ACPI_PARSE_EXECUTE)
|
||||
if (WalkState->DeferredNode)
|
||||
{
|
||||
Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE;
|
||||
Node = WalkState->DeferredNode;
|
||||
Status = AE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND;
|
||||
}
|
||||
/*
|
||||
* During the load phase, we want to enter the name of the field into
|
||||
* the namespace. During the execute phase (when we evaluate the size
|
||||
* operand), we want to lookup the name
|
||||
*/
|
||||
if (WalkState->ParseFlags & ACPI_PARSE_EXECUTE)
|
||||
{
|
||||
Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE;
|
||||
}
|
||||
else
|
||||
{
|
||||
Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND;
|
||||
}
|
||||
|
||||
/*
|
||||
* Enter the NameString into the namespace
|
||||
*/
|
||||
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
|
||||
ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1,
|
||||
Flags, WalkState, &(Node));
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_NSERROR (Arg->Common.Value.String, Status);
|
||||
return_ACPI_STATUS (Status);
|
||||
/*
|
||||
* Enter the NameString into the namespace
|
||||
*/
|
||||
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
|
||||
ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1,
|
||||
Flags, WalkState, &(Node));
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_NSERROR (Arg->Common.Value.String, Status);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
/* We could put the returned object (Node) on the object stack for later, but
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dsinit - Object initialization namespace walk
|
||||
* $Revision: 7 $
|
||||
* $Revision: 9 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -183,7 +183,7 @@ AcpiDsInitOneObject (
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Region %p [%4.4s] - Init failure, %s\n",
|
||||
ObjHandle, ((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii,
|
||||
ObjHandle, AcpiUtGetNodeName (ObjHandle),
|
||||
AcpiFormatException (Status)));
|
||||
}
|
||||
|
||||
@ -214,14 +214,14 @@ AcpiDsInitOneObject (
|
||||
}
|
||||
|
||||
/*
|
||||
* Always parse methods to detect errors, we may delete
|
||||
* Always parse methods to detect errors, we will delete
|
||||
* the parse tree below
|
||||
*/
|
||||
Status = AcpiDsParseMethod (ObjHandle);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] - parse failure, %s\n",
|
||||
ObjHandle, ((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii,
|
||||
ObjHandle, AcpiUtGetNodeName (ObjHandle),
|
||||
AcpiFormatException (Status)));
|
||||
|
||||
/* This parse failed, but we will continue parsing more methods */
|
||||
@ -230,7 +230,7 @@ AcpiDsInitOneObject (
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete the parse tree. We simple re-parse the method
|
||||
* Delete the parse tree. We simply re-parse the method
|
||||
* for every execution since there isn't much overhead
|
||||
*/
|
||||
AcpiNsDeleteNamespaceSubtree (ObjHandle);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dsmethod - Parser/Interpreter interface - control method parsing
|
||||
* $Revision: 91 $
|
||||
* $Revision: 92 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -169,7 +169,7 @@ AcpiDsParseMethod (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Parsing [%4.4s] **** NamedObj=%p\n",
|
||||
((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii, ObjHandle));
|
||||
AcpiUtGetNodeName (ObjHandle), ObjHandle));
|
||||
|
||||
/* Extract the method object from the method Node */
|
||||
|
||||
@ -251,7 +251,7 @@ AcpiDsParseMethod (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"**** [%4.4s] Parsed **** NamedObj=%p Op=%p\n",
|
||||
((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii, ObjHandle, Op));
|
||||
AcpiUtGetNodeName (ObjHandle), ObjHandle, Op));
|
||||
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
return_ACPI_STATUS (Status);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dsmthdat - control method arguments and local variables
|
||||
* $Revision: 71 $
|
||||
* $Revision: 74 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -410,7 +410,7 @@ AcpiDsMethodDataSetValue (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Increment ref count so object can't be deleted while installed.
|
||||
* NOTE: We do not copy the object in order to preserve the call by
|
||||
* reference semantics of ACPI Control Method invocation.
|
||||
@ -662,13 +662,13 @@ AcpiDsStoreObjectToLocal (
|
||||
ACPI_STATUS Status;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_OPERAND_OBJECT *CurrentObjDesc;
|
||||
ACPI_OPERAND_OBJECT *NewObjDesc;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("DsStoreObjectToLocal");
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Opcode=%d Idx=%d Obj=%p\n",
|
||||
Opcode, Index, ObjDesc));
|
||||
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (!ObjDesc)
|
||||
@ -692,6 +692,21 @@ AcpiDsStoreObjectToLocal (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the reference count on the object is more than one, we must
|
||||
* take a copy of the object before we store.
|
||||
*/
|
||||
NewObjDesc = ObjDesc;
|
||||
if (ObjDesc->Common.ReferenceCount > 1)
|
||||
{
|
||||
Status = AcpiUtCopyIobjectToIobject (ObjDesc, &NewObjDesc, WalkState);
|
||||
NewObjDesc;
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If there is an object already in this slot, we either
|
||||
* have to delete it, or if this is an argument and there
|
||||
@ -725,8 +740,8 @@ AcpiDsStoreObjectToLocal (
|
||||
*/
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) != ACPI_DESC_TYPE_OPERAND)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Invalid descriptor type while storing to method arg: %X\n",
|
||||
CurrentObjDesc->Common.Type));
|
||||
ACPI_REPORT_ERROR (("Invalid descriptor type while storing to method arg: [%s]\n",
|
||||
AcpiUtGetDescriptorName (CurrentObjDesc)));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
@ -738,15 +753,22 @@ AcpiDsStoreObjectToLocal (
|
||||
(CurrentObjDesc->Reference.Opcode == AML_REF_OF_OP))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"Arg (%p) is an ObjRef(Node), storing in node %p\n",
|
||||
ObjDesc, CurrentObjDesc));
|
||||
"Arg (%p) is an ObjRef(Node), storing in node %p\n",
|
||||
NewObjDesc, CurrentObjDesc));
|
||||
|
||||
/*
|
||||
* Store this object to the Node
|
||||
* (perform the indirect store)
|
||||
*/
|
||||
Status = AcpiExStoreObjectToNode (ObjDesc,
|
||||
Status = AcpiExStoreObjectToNode (NewObjDesc,
|
||||
CurrentObjDesc->Reference.Object, WalkState);
|
||||
|
||||
/* Remove local reference if we copied the object above */
|
||||
|
||||
if (NewObjDesc != ObjDesc)
|
||||
{
|
||||
AcpiUtRemoveReference (NewObjDesc);
|
||||
}
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
@ -759,12 +781,19 @@ AcpiDsStoreObjectToLocal (
|
||||
}
|
||||
|
||||
/*
|
||||
* Install the ObjStack descriptor (*ObjDesc) into
|
||||
* Install the Obj descriptor (*NewObjDesc) into
|
||||
* the descriptor for the Arg or Local.
|
||||
* Install the new object in the stack entry
|
||||
* (increments the object reference count by one)
|
||||
*/
|
||||
Status = AcpiDsMethodDataSetValue (Opcode, Index, ObjDesc, WalkState);
|
||||
Status = AcpiDsMethodDataSetValue (Opcode, Index, NewObjDesc, WalkState);
|
||||
|
||||
/* Remove local reference if we copied the object above */
|
||||
|
||||
if (NewObjDesc != ObjDesc)
|
||||
{
|
||||
AcpiUtRemoveReference (NewObjDesc);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dsopcode - Dispatcher Op Region support and handling of
|
||||
* "control" opcodes
|
||||
* $Revision: 87 $
|
||||
* $Revision: 91 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -139,7 +139,7 @@
|
||||
*
|
||||
* RETURN: Status.
|
||||
*
|
||||
* DESCRIPTION: Late execution of region or field arguments
|
||||
* DESCRIPTION: Late (deferred) execution of region or field arguments
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
@ -188,7 +188,10 @@ AcpiDsExecuteArguments (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Mark this parse as a deferred opcode */
|
||||
|
||||
WalkState->ParseFlags = ACPI_PARSE_DEFERRED_OP;
|
||||
WalkState->DeferredNode = Node;
|
||||
|
||||
/* Pass1: Parse the entire declaration */
|
||||
|
||||
@ -206,7 +209,7 @@ AcpiDsExecuteArguments (
|
||||
Arg->Common.Node = Node;
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
/* Evaluate the address and length arguments for the Buffer Field */
|
||||
/* Evaluate the deferred arguments */
|
||||
|
||||
Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP);
|
||||
if (!Op)
|
||||
@ -224,6 +227,8 @@ AcpiDsExecuteArguments (
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Execute the opcode and arguments */
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart,
|
||||
AmlLength, NULL, NULL, 3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -232,6 +237,9 @@ AcpiDsExecuteArguments (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Mark this execution as a deferred opcode */
|
||||
|
||||
WalkState->DeferredNode = Node;
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -274,8 +282,8 @@ AcpiDsGetBufferFieldArguments (
|
||||
Node = ObjDesc->BufferField.Node;
|
||||
|
||||
ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (ACPI_TYPE_BUFFER_FIELD, Node, NULL));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField JIT Init\n",
|
||||
Node->Name.Ascii));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField Arg Init\n",
|
||||
AcpiUtGetNodeName (Node)));
|
||||
|
||||
/* Execute the AML code for the TermArg arguments */
|
||||
|
||||
@ -289,7 +297,7 @@ AcpiDsGetBufferFieldArguments (
|
||||
*
|
||||
* FUNCTION: AcpiDsGetBufferArguments
|
||||
*
|
||||
* PARAMETERS: ObjDesc - A valid Bufferobject
|
||||
* PARAMETERS: ObjDesc - A valid Buffer object
|
||||
*
|
||||
* RETURN: Status.
|
||||
*
|
||||
@ -324,7 +332,7 @@ AcpiDsGetBufferArguments (
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Buffer JIT Init\n"));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Buffer Arg Init\n"));
|
||||
|
||||
/* Execute the AML code for the TermArg arguments */
|
||||
|
||||
@ -338,7 +346,7 @@ AcpiDsGetBufferArguments (
|
||||
*
|
||||
* FUNCTION: AcpiDsGetPackageArguments
|
||||
*
|
||||
* PARAMETERS: ObjDesc - A valid Packageobject
|
||||
* PARAMETERS: ObjDesc - A valid Package object
|
||||
*
|
||||
* RETURN: Status.
|
||||
*
|
||||
@ -373,7 +381,7 @@ AcpiDsGetPackageArguments (
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Package JIT Init\n"));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Package Arg Init\n"));
|
||||
|
||||
/* Execute the AML code for the TermArg arguments */
|
||||
|
||||
@ -423,11 +431,12 @@ AcpiDsGetRegionArguments (
|
||||
|
||||
Node = ObjDesc->Region.Node;
|
||||
|
||||
ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL));
|
||||
ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL));
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Init at AML %p\n",
|
||||
Node->Name.Ascii, ExtraDesc->Extra.AmlStart));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Arg Init at AML %p\n",
|
||||
AcpiUtGetNodeName (Node), ExtraDesc->Extra.AmlStart));
|
||||
|
||||
/* Execute the argument AML */
|
||||
|
||||
Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node),
|
||||
ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart);
|
||||
@ -519,8 +528,8 @@ AcpiDsInitBufferField (
|
||||
*/
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (ResultDesc) != ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(%s) destination must be a NS Node\n",
|
||||
AcpiPsGetOpcodeName (AmlOpcode)));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(%s) destination not a NS Node [%s]\n",
|
||||
AcpiPsGetOpcodeName (AmlOpcode), AcpiUtGetDescriptorName (ResultDesc)));
|
||||
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
goto Cleanup;
|
||||
@ -596,15 +605,17 @@ AcpiDsInitBufferField (
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
|
||||
/* Entire field must fit within the current length of the buffer */
|
||||
|
||||
if ((BitOffset + BitCount) >
|
||||
(8 * (UINT32) BufferDesc->Buffer.Length))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Field size %d exceeds Buffer size %d (bits)\n",
|
||||
BitOffset + BitCount, 8 * (UINT32) BufferDesc->Buffer.Length));
|
||||
"Field [%4.4s] size %d exceeds Buffer [%4.4s] size %d (bits)\n",
|
||||
AcpiUtGetNodeName (ResultDesc),
|
||||
BitOffset + BitCount,
|
||||
AcpiUtGetNodeName (BufferDesc->Buffer.Node),
|
||||
8 * (UINT32) BufferDesc->Buffer.Length));
|
||||
Status = AE_AML_BUFFER_LIMIT;
|
||||
goto Cleanup;
|
||||
}
|
||||
@ -837,7 +848,7 @@ AcpiDsEvalRegionOperands (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n",
|
||||
ObjDesc,
|
||||
ACPI_HIDWORD (ObjDesc->Region.Address), ACPI_LODWORD (ObjDesc->Region.Address),
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
|
||||
ObjDesc->Region.Length));
|
||||
|
||||
/* Now the address and length are valid for this opregion */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: dsutils - Dispatcher utilities
|
||||
* $Revision: 99 $
|
||||
* $Revision: 100 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -127,6 +127,7 @@
|
||||
#define _COMPONENT ACPI_DISPATCHER
|
||||
ACPI_MODULE_NAME ("dsutils")
|
||||
|
||||
|
||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
||||
|
||||
/*******************************************************************************
|
||||
@ -277,7 +278,6 @@ ResultNotUsed:
|
||||
AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), Op));
|
||||
|
||||
return_VALUE (FALSE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -322,7 +322,6 @@ AcpiDsDeleteResultIfNotUsed (
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
||||
if (!AcpiDsIsResultUsed (Op, WalkState))
|
||||
{
|
||||
/*
|
||||
@ -479,67 +478,85 @@ AcpiDsCreateOperand (
|
||||
* in NameString
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Differentiate between a namespace "create" operation
|
||||
* versus a "lookup" operation (IMODE_LOAD_PASS2 vs.
|
||||
* IMODE_EXECUTE) in order to support the creation of
|
||||
* namespace objects during the execution of control methods.
|
||||
* Special handling for BufferField declarations. This is a deferred
|
||||
* opcode that unfortunately defines the field name as the last
|
||||
* parameter instead of the first. We get here when we are performing
|
||||
* the deferred execution, so the actual name of the field is already
|
||||
* in the namespace. We don't want to attempt to look it up again
|
||||
* because we may be executing in a different scope than where the
|
||||
* actual opcode exists.
|
||||
*/
|
||||
ParentOp = Arg->Common.Parent;
|
||||
OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode);
|
||||
if ((OpInfo->Flags & AML_NSNODE) &&
|
||||
(ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) &&
|
||||
(ParentOp->Common.AmlOpcode != AML_REGION_OP) &&
|
||||
(ParentOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP))
|
||||
if ((WalkState->DeferredNode) &&
|
||||
(WalkState->DeferredNode->Type == ACPI_TYPE_BUFFER_FIELD) &&
|
||||
(ArgIndex != 0))
|
||||
{
|
||||
/* Enter name into namespace if not found */
|
||||
|
||||
InterpreterMode = ACPI_IMODE_LOAD_PASS2;
|
||||
ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, WalkState->DeferredNode);
|
||||
Status = AE_OK;
|
||||
}
|
||||
|
||||
else
|
||||
else /* All other opcodes */
|
||||
{
|
||||
/* Return a failure if name not found */
|
||||
|
||||
InterpreterMode = ACPI_IMODE_EXECUTE;
|
||||
}
|
||||
|
||||
Status = AcpiNsLookup (WalkState->ScopeInfo, NameString,
|
||||
ACPI_TYPE_ANY, InterpreterMode,
|
||||
ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE,
|
||||
WalkState,
|
||||
ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc));
|
||||
/*
|
||||
* The only case where we pass through (ignore) a NOT_FOUND
|
||||
* error is for the CondRefOf opcode.
|
||||
*/
|
||||
if (Status == AE_NOT_FOUND)
|
||||
{
|
||||
if (ParentOp->Common.AmlOpcode == AML_COND_REF_OF_OP)
|
||||
/*
|
||||
* Differentiate between a namespace "create" operation
|
||||
* versus a "lookup" operation (IMODE_LOAD_PASS2 vs.
|
||||
* IMODE_EXECUTE) in order to support the creation of
|
||||
* namespace objects during the execution of control methods.
|
||||
*/
|
||||
ParentOp = Arg->Common.Parent;
|
||||
OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode);
|
||||
if ((OpInfo->Flags & AML_NSNODE) &&
|
||||
(ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) &&
|
||||
(ParentOp->Common.AmlOpcode != AML_REGION_OP) &&
|
||||
(ParentOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP))
|
||||
{
|
||||
/*
|
||||
* For the Conditional Reference op, it's OK if
|
||||
* the name is not found; We just need a way to
|
||||
* indicate this to the interpreter, set the
|
||||
* object to the root
|
||||
*/
|
||||
ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, AcpiGbl_RootNode);
|
||||
Status = AE_OK;
|
||||
}
|
||||
/* Enter name into namespace if not found */
|
||||
|
||||
InterpreterMode = ACPI_IMODE_LOAD_PASS2;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* We just plain didn't find it -- which is a
|
||||
* very serious error at this point
|
||||
*/
|
||||
Status = AE_AML_NAME_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
/* Return a failure if name not found */
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_NSERROR (NameString, Status);
|
||||
InterpreterMode = ACPI_IMODE_EXECUTE;
|
||||
}
|
||||
|
||||
Status = AcpiNsLookup (WalkState->ScopeInfo, NameString,
|
||||
ACPI_TYPE_ANY, InterpreterMode,
|
||||
ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE,
|
||||
WalkState,
|
||||
ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc));
|
||||
/*
|
||||
* The only case where we pass through (ignore) a NOT_FOUND
|
||||
* error is for the CondRefOf opcode.
|
||||
*/
|
||||
if (Status == AE_NOT_FOUND)
|
||||
{
|
||||
if (ParentOp->Common.AmlOpcode == AML_COND_REF_OF_OP)
|
||||
{
|
||||
/*
|
||||
* For the Conditional Reference op, it's OK if
|
||||
* the name is not found; We just need a way to
|
||||
* indicate this to the interpreter, set the
|
||||
* object to the root
|
||||
*/
|
||||
ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, AcpiGbl_RootNode);
|
||||
Status = AE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* We just plain didn't find it -- which is a
|
||||
* very serious error at this point
|
||||
*/
|
||||
Status = AE_AML_NAME_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_NSERROR (NameString, Status);
|
||||
}
|
||||
}
|
||||
|
||||
/* Free the namestring created above */
|
||||
@ -562,8 +579,6 @@ AcpiDsCreateOperand (
|
||||
}
|
||||
ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState));
|
||||
}
|
||||
|
||||
|
||||
else
|
||||
{
|
||||
/* Check for null name case */
|
||||
@ -580,7 +595,6 @@ AcpiDsCreateOperand (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Null namepath: Arg=%p\n", Arg));
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Opcode = Arg->Common.AmlOpcode;
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: dswexec - Dispatcher method execution callbacks;
|
||||
* dispatch to interpreter.
|
||||
* $Revision: 103 $
|
||||
* $Revision: 105 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -518,10 +518,26 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"[%s]: Could not resolve operands, %s\n",
|
||||
AcpiPsGetOpcodeName (WalkState->Opcode),
|
||||
AcpiFormatException (Status)));
|
||||
/*
|
||||
* Treat constructs of the form "Store(LocalX,LocalX)" as noops when the
|
||||
* Local is uninitialized.
|
||||
*/
|
||||
if ((Status == AE_AML_UNINITIALIZED_LOCAL) &&
|
||||
(WalkState->Opcode == AML_STORE_OP) &&
|
||||
(WalkState->Operands[0]->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) &&
|
||||
(WalkState->Operands[1]->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) &&
|
||||
(WalkState->Operands[0]->Reference.Opcode ==
|
||||
WalkState->Operands[1]->Reference.Opcode))
|
||||
{
|
||||
Status = AE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"[%s]: Could not resolve operands, %s\n",
|
||||
AcpiPsGetOpcodeName (WalkState->Opcode),
|
||||
AcpiFormatException (Status)));
|
||||
}
|
||||
}
|
||||
|
||||
/* Always delete the argument objects and clear the operand stack */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswload - Dispatcher namespace load callbacks
|
||||
* $Revision: 83 $
|
||||
* $Revision: 85 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -246,7 +246,7 @@ AcpiDsLoad1BeginOp (
|
||||
ObjectType = WalkState->OpInfo->ObjectType;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
"State=%p Op=%p [%s] ", WalkState, Op, AcpiUtGetTypeName (ObjectType)));
|
||||
"State=%p Op=%p [%s]\n", WalkState, Op, AcpiUtGetTypeName (ObjectType)));
|
||||
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
@ -330,16 +330,27 @@ AcpiDsLoad1BeginOp (
|
||||
* BufferField, or Package), the name of the object is already
|
||||
* in the namespace.
|
||||
*/
|
||||
if (WalkState->DeferredNode)
|
||||
{
|
||||
/* This name is already in the namespace, get the node */
|
||||
|
||||
Node = WalkState->DeferredNode;
|
||||
Status = AE_OK;
|
||||
break;
|
||||
}
|
||||
|
||||
Flags = ACPI_NS_NO_UPSEARCH;
|
||||
if ((WalkState->Opcode != AML_SCOPE_OP) &&
|
||||
(!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP)))
|
||||
{
|
||||
Flags |= ACPI_NS_ERROR_IF_FOUND;
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Cannot already exist\n"));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n",
|
||||
AcpiUtGetTypeName (ObjectType)));
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Both Find or Create allowed\n"));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Both Find or Create allowed\n",
|
||||
AcpiUtGetTypeName (ObjectType)));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -700,7 +711,18 @@ AcpiDsLoad2BeginOp (
|
||||
* Enter the named type into the internal namespace. We enter the name
|
||||
* as we go downward in the parse tree. Any necessary subobjects that involve
|
||||
* arguments to the opcode must be created as we go back up the parse tree later.
|
||||
*
|
||||
* Note: Name may already exist if we are executing a deferred opcode.
|
||||
*/
|
||||
if (WalkState->DeferredNode)
|
||||
{
|
||||
/* This name is already in the namespace, get the node */
|
||||
|
||||
Node = WalkState->DeferredNode;
|
||||
Status = AE_OK;
|
||||
break;
|
||||
}
|
||||
|
||||
Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
|
||||
ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH, WalkState, &(Node));
|
||||
break;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswscope - Scope stack manipulation
|
||||
* $Revision: 57 $
|
||||
* $Revision: 59 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -198,10 +198,9 @@ AcpiDsScopeStackPush (
|
||||
|
||||
if (!AcpiUtValidObjectType (Type))
|
||||
{
|
||||
ACPI_REPORT_WARNING (("DsScopeStackPush: type code out of range\n"));
|
||||
ACPI_REPORT_WARNING (("DsScopeStackPush: Invalid object type: 0x%X\n", Type));
|
||||
}
|
||||
|
||||
|
||||
/* Allocate a new scope object */
|
||||
|
||||
ScopeInfo = AcpiUtCreateGenericState ();
|
||||
@ -225,25 +224,24 @@ AcpiDsScopeStackPush (
|
||||
if (OldScopeInfo)
|
||||
{
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
|
||||
"[%4.4s] (%10s)",
|
||||
OldScopeInfo->Scope.Node->Name.Ascii,
|
||||
"[%4.4s] (%s)",
|
||||
AcpiUtGetNodeName (OldScopeInfo->Scope.Node),
|
||||
AcpiUtGetTypeName (OldScopeInfo->Common.Value)));
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
|
||||
"[\\___] (%10s)", "ROOT"));
|
||||
"[\\___] (%s)", "ROOT"));
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
|
||||
", New scope -> [%4.4s] (%s)\n",
|
||||
ScopeInfo->Scope.Node->Name.Ascii,
|
||||
AcpiUtGetNodeName (ScopeInfo->Scope.Node),
|
||||
AcpiUtGetTypeName (ScopeInfo->Common.Value)));
|
||||
|
||||
/* Push new scope object onto stack */
|
||||
|
||||
AcpiUtPushGenericState (&WalkState->ScopeInfo, ScopeInfo);
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
@ -288,9 +286,9 @@ AcpiDsScopeStackPop (
|
||||
WalkState->ScopeDepth--;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"[%.2d] Popped scope [%4.4s] (%10s), New scope -> ",
|
||||
"[%.2d] Popped scope [%4.4s] (%s), New scope -> ",
|
||||
(UINT32) WalkState->ScopeDepth,
|
||||
ScopeInfo->Scope.Node->Name.Ascii,
|
||||
AcpiUtGetNodeName (ScopeInfo->Scope.Node),
|
||||
AcpiUtGetTypeName (ScopeInfo->Common.Value)));
|
||||
|
||||
NewScopeInfo = WalkState->ScopeInfo;
|
||||
@ -298,7 +296,7 @@ AcpiDsScopeStackPop (
|
||||
{
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
|
||||
"[%4.4s] (%s)\n",
|
||||
NewScopeInfo->Scope.Node->Name.Ascii,
|
||||
AcpiUtGetNodeName (NewScopeInfo->Scope.Node),
|
||||
AcpiUtGetTypeName (NewScopeInfo->Common.Value)));
|
||||
}
|
||||
else
|
||||
@ -308,7 +306,6 @@ AcpiDsScopeStackPop (
|
||||
}
|
||||
|
||||
AcpiUtDeleteGenericState (ScopeInfo);
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: dswstate - Dispatcher parse tree walk management routines
|
||||
* $Revision: 75 $
|
||||
* $Revision: 76 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -131,11 +131,12 @@
|
||||
* FUNCTION: AcpiDsResultInsert
|
||||
*
|
||||
* PARAMETERS: Object - Object to push
|
||||
* Index - Where to insert the object
|
||||
* WalkState - Current Walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Push an object onto this walk's result stack
|
||||
* DESCRIPTION: Insert an object onto this walk's result stack
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -192,6 +193,7 @@ AcpiDsResultInsert (
|
||||
* FUNCTION: AcpiDsResultRemove
|
||||
*
|
||||
* PARAMETERS: Object - Where to return the popped object
|
||||
* Index - Where to extract the object
|
||||
* WalkState - Current Walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
@ -318,6 +320,7 @@ AcpiDsResultPop (
|
||||
return (AE_AML_NO_RETURN_VALUE);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsResultPopFromBottom
|
||||
@ -384,7 +387,6 @@ AcpiDsResultPopFromBottom (
|
||||
*Object, (*Object) ? AcpiUtGetObjectTypeName (*Object) : "NULL",
|
||||
State, WalkState));
|
||||
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
@ -450,8 +452,7 @@ AcpiDsResultPush (
|
||||
*
|
||||
* FUNCTION: AcpiDsResultStackPush
|
||||
*
|
||||
* PARAMETERS: Object - Object to push
|
||||
* WalkState - Current Walk state
|
||||
* PARAMETERS: WalkState - Current Walk state
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -514,7 +515,6 @@ AcpiDsResultStackPop (
|
||||
return (AE_AML_NO_OPERAND);
|
||||
}
|
||||
|
||||
|
||||
State = AcpiUtPopGenericState (&WalkState->Results);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
@ -671,6 +671,7 @@ AcpiDsObjStackPopObject (
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDsObjStackPop
|
||||
@ -742,6 +743,7 @@ AcpiDsObjStackPopAndDelete (
|
||||
UINT32 i;
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("DsObjStackPopAndDelete");
|
||||
|
||||
|
||||
@ -994,8 +996,15 @@ AcpiDsCreateWalkState (
|
||||
* FUNCTION: AcpiDsInitAmlWalk
|
||||
*
|
||||
* PARAMETERS: WalkState - New state to be initialized
|
||||
* Op - Current parse op
|
||||
* MethodNode - Control method NS node, if any
|
||||
* AmlStart - Start of AML
|
||||
* AmlLength - Length of AML
|
||||
* Params - Method args, if any
|
||||
* ReturnObjDesc - Where to store a return object, if any
|
||||
* PassNumber - 1, 2, or 3
|
||||
*
|
||||
* RETURN: None
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Initialize a walk state for a pass 1 or 2 parse tree walk
|
||||
*
|
||||
@ -1039,10 +1048,10 @@ AcpiDsInitAmlWalk (
|
||||
|
||||
if (MethodNode)
|
||||
{
|
||||
WalkState->ParserState.StartNode = MethodNode;
|
||||
WalkState->WalkType = ACPI_WALK_METHOD;
|
||||
WalkState->MethodNode = MethodNode;
|
||||
WalkState->MethodDesc = AcpiNsGetAttachedObject (MethodNode);
|
||||
WalkState->ParserState.StartNode = MethodNode;
|
||||
WalkState->WalkType = ACPI_WALK_METHOD;
|
||||
WalkState->MethodNode = MethodNode;
|
||||
WalkState->MethodDesc = AcpiNsGetAttachedObject (MethodNode);
|
||||
|
||||
/* Push start scope on scope stack and make it current */
|
||||
|
||||
@ -1073,6 +1082,7 @@ AcpiDsInitAmlWalk (
|
||||
{
|
||||
ExtraOp = ExtraOp->Common.Parent;
|
||||
}
|
||||
|
||||
if (!ExtraOp)
|
||||
{
|
||||
ParserState->StartNode = NULL;
|
||||
@ -1138,7 +1148,7 @@ AcpiDsDeleteWalkState (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p walk still has a scope list\n", WalkState));
|
||||
}
|
||||
|
||||
/* Always must free any linked control states */
|
||||
/* Always must free any linked control states */
|
||||
|
||||
while (WalkState->ControlState)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evgpe - General Purpose Event handling and dispatch
|
||||
* $Revision: 27 $
|
||||
* $Revision: 31 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -218,12 +218,10 @@ AcpiEvGpeDetect (
|
||||
{
|
||||
UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED;
|
||||
UINT8 EnabledStatusByte;
|
||||
UINT8 BitMask;
|
||||
ACPI_GPE_REGISTER_INFO *GpeRegisterInfo;
|
||||
UINT32 InValue;
|
||||
ACPI_STATUS Status;
|
||||
ACPI_GPE_BLOCK_INFO *GpeBlock;
|
||||
UINT32 GpeNumber;
|
||||
UINT32 i;
|
||||
UINT32 j;
|
||||
|
||||
@ -270,11 +268,9 @@ AcpiEvGpeDetect (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS,
|
||||
"GPE pair: Status %8.8X%8.8X = %02X, Enable %8.8X%8.8X = %02X\n",
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (GpeRegisterInfo->StatusAddress.Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (GpeRegisterInfo->StatusAddress.Address)),
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeRegisterInfo->StatusAddress.Address)),
|
||||
GpeRegisterInfo->Status,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (GpeRegisterInfo->EnableAddress.Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (GpeRegisterInfo->EnableAddress.Address)),
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeRegisterInfo->EnableAddress.Address)),
|
||||
GpeRegisterInfo->Enable));
|
||||
|
||||
/* First check if there is anything active at all in this register */
|
||||
@ -290,21 +286,19 @@ AcpiEvGpeDetect (
|
||||
|
||||
/* Now look at the individual GPEs in this byte register */
|
||||
|
||||
for (j = 0, BitMask = 1; j < ACPI_GPE_REGISTER_WIDTH; j++, BitMask <<= 1)
|
||||
for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++)
|
||||
{
|
||||
/* Examine one GPE bit */
|
||||
|
||||
if (EnabledStatusByte & BitMask)
|
||||
if (EnabledStatusByte & AcpiGbl_DecodeTo8bit[j])
|
||||
{
|
||||
/*
|
||||
* Found an active GPE. Dispatch the event to a handler
|
||||
* or method.
|
||||
*/
|
||||
GpeNumber = (i * ACPI_GPE_REGISTER_WIDTH) + j;
|
||||
|
||||
IntStatus |= AcpiEvGpeDispatch (
|
||||
&GpeBlock->EventInfo[GpeNumber],
|
||||
GpeNumber + GpeBlock->RegisterInfo[GpeNumber].BaseGpeNumber);
|
||||
&GpeBlock->EventInfo[(i * ACPI_GPE_REGISTER_WIDTH) + j],
|
||||
j + GpeRegisterInfo->BaseGpeNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -385,7 +379,7 @@ AcpiEvAsynchExecuteGpeMethod (
|
||||
{
|
||||
ACPI_REPORT_ERROR (("%s while evaluating method [%4.4s] for GPE[%2X]\n",
|
||||
AcpiFormatException (Status),
|
||||
LocalGpeEventInfo.MethodNode->Name.Ascii, GpeNumber));
|
||||
AcpiUtGetNodeName (LocalGpeEventInfo.MethodNode), GpeNumber));
|
||||
}
|
||||
}
|
||||
|
||||
@ -463,6 +457,20 @@ AcpiEvGpeDispatch (
|
||||
/* Invoke the installed handler (at interrupt level) */
|
||||
|
||||
GpeEventInfo->Handler (GpeEventInfo->Context);
|
||||
|
||||
/* It is now safe to clear level-triggered events. */
|
||||
|
||||
if (GpeEventInfo->Flags & ACPI_EVENT_LEVEL_TRIGGERED)
|
||||
{
|
||||
Status = AcpiHwClearGpe (GpeEventInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR ((
|
||||
"AcpiEvGpeDispatch: Unable to clear GPE[%2X]\n",
|
||||
GpeNumber));
|
||||
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (GpeEventInfo->MethodNode)
|
||||
{
|
||||
@ -473,13 +481,16 @@ AcpiEvGpeDispatch (
|
||||
Status = AcpiHwDisableGpe (GpeEventInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("AcpiEvGpeDispatch: Unable to disable GPE[%2X]\n",
|
||||
ACPI_REPORT_ERROR ((
|
||||
"AcpiEvGpeDispatch: Unable to disable GPE[%2X]\n",
|
||||
GpeNumber));
|
||||
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
|
||||
}
|
||||
|
||||
/* Execute the method associated with the GPE. */
|
||||
|
||||
/*
|
||||
* Execute the method associated with the GPE
|
||||
* NOTE: Level-triggered GPEs are cleared after the method completes.
|
||||
*/
|
||||
if (ACPI_FAILURE (AcpiOsQueueForExecution (OSD_PRIORITY_GPE,
|
||||
AcpiEvAsynchExecuteGpeMethod,
|
||||
GpeEventInfo)))
|
||||
@ -499,25 +510,13 @@ AcpiEvGpeDispatch (
|
||||
|
||||
/*
|
||||
* Disable the GPE. The GPE will remain disabled until the ACPI
|
||||
* Core Subsystem is restarted, or the handler is reinstalled.
|
||||
* Core Subsystem is restarted, or a handler is installed.
|
||||
*/
|
||||
Status = AcpiHwDisableGpe (GpeEventInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("AcpiEvGpeDispatch: Unable to disable GPE[%2X]\n",
|
||||
GpeNumber));
|
||||
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
|
||||
}
|
||||
}
|
||||
|
||||
/* It is now safe to clear level-triggered events. */
|
||||
|
||||
if (GpeEventInfo->Flags & ACPI_EVENT_LEVEL_TRIGGERED)
|
||||
{
|
||||
Status = AcpiHwClearGpe (GpeEventInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("AcpiEvGpeDispatch: Unable to clear GPE[%2X]\n",
|
||||
ACPI_REPORT_ERROR ((
|
||||
"AcpiEvGpeDispatch: Unable to disable GPE[%2X]\n",
|
||||
GpeNumber));
|
||||
return_VALUE (ACPI_INTERRUPT_NOT_HANDLED);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evgpeblk - GPE block creation and initialization.
|
||||
* $Revision: 23 $
|
||||
* $Revision: 26 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -280,7 +280,7 @@ AcpiEvSaveMethodInfo (
|
||||
Name[ACPI_NAME_SIZE] = 0;
|
||||
|
||||
/*
|
||||
* Edge/Level determination is based on the 2nd character
|
||||
* Edge/Level determination is based on the 2nd character
|
||||
* of the method name
|
||||
*/
|
||||
switch (Name[1])
|
||||
@ -577,7 +577,7 @@ UnlockAndExit:
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Install new GPE block with mutex support
|
||||
* DESCRIPTION: Remove a GPE block
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -862,8 +862,7 @@ AcpiEvCreateGpeBlock (
|
||||
((GpeBlock->RegisterCount * ACPI_GPE_REGISTER_WIDTH) -1)),
|
||||
GpeDevice->Name.Ascii,
|
||||
GpeBlock->RegisterCount,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (GpeBlock->BlockAddress.Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (GpeBlock->BlockAddress.Address)),
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeBlock->BlockAddress.Address)),
|
||||
InterruptLevel));
|
||||
|
||||
/* Find all GPE methods (_Lxx, _Exx) for this block */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evmisc - Miscellaneous event manager support functions
|
||||
* $Revision: 68 $
|
||||
* $Revision: 69 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -278,7 +278,8 @@ AcpiEvQueueNotifyRequest (
|
||||
/* There is no per-device notify handler for this device */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"No notify handler for [%4.4s] node %p\n", Node->Name.Ascii, Node));
|
||||
"No notify handler for [%4.4s] node %p\n",
|
||||
AcpiUtGetNodeName (Node), Node));
|
||||
}
|
||||
|
||||
return (Status);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch
|
||||
* $Revision: 141 $
|
||||
* $Revision: 146 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -214,7 +214,7 @@ AcpiEvInitAddressSpaces (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static ACPI_STATUS
|
||||
ACPI_STATUS
|
||||
AcpiEvExecuteRegMethod (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
UINT32 Function)
|
||||
@ -284,7 +284,7 @@ Cleanup:
|
||||
*
|
||||
* FUNCTION: AcpiEvAddressSpaceDispatch
|
||||
*
|
||||
* PARAMETERS: RegionObj - internal region object
|
||||
* PARAMETERS: RegionObj - Internal region object
|
||||
* SpaceId - ID of the address space (0-255)
|
||||
* Function - Read or Write operation
|
||||
* Address - Where in the space to read or write
|
||||
@ -326,10 +326,12 @@ AcpiEvAddressSpaceDispatch (
|
||||
|
||||
/* Ensure that there is a handler associated with this region */
|
||||
|
||||
HandlerDesc = RegionObj->Region.AddressSpace;
|
||||
HandlerDesc = RegionObj->Region.Handler;
|
||||
if (!HandlerDesc)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "no handler for region(%p) [%s]\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"No handler for Region [%4.4s] (%p) [%s]\n",
|
||||
AcpiUtGetNodeName (RegionObj->Region.Node),
|
||||
RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));
|
||||
|
||||
return_ACPI_STATUS (AE_NOT_EXIST);
|
||||
@ -411,8 +413,8 @@ AcpiEvAddressSpaceDispatch (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
|
||||
"Handler %p (@%p) Address %8.8X%8.8X [%s]\n",
|
||||
&RegionObj->Region.AddressSpace->AddressSpace, Handler,
|
||||
ACPI_HIDWORD (Address), ACPI_LODWORD (Address),
|
||||
&RegionObj->Region.Handler->AddressSpace, Handler,
|
||||
ACPI_FORMAT_UINT64 (Address),
|
||||
AcpiUtGetRegionName (RegionObj->Region.SpaceId)));
|
||||
|
||||
if (!(HandlerDesc->AddressSpace.Flags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED))
|
||||
@ -454,6 +456,7 @@ AcpiEvAddressSpaceDispatch (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvDetachRegion
|
||||
@ -477,7 +480,7 @@ AcpiEvDetachRegion(
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
ACPI_OPERAND_OBJECT **LastObjPtr;
|
||||
ACPI_ADR_SPACE_SETUP RegionSetup;
|
||||
void *RegionContext;
|
||||
void **RegionContext;
|
||||
ACPI_OPERAND_OBJECT *RegionObj2;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
@ -490,11 +493,11 @@ AcpiEvDetachRegion(
|
||||
{
|
||||
return_VOID;
|
||||
}
|
||||
RegionContext = RegionObj2->Extra.RegionContext;
|
||||
RegionContext = &RegionObj2->Extra.RegionContext;
|
||||
|
||||
/* Get the address handler from the region object */
|
||||
|
||||
HandlerObj = RegionObj->Region.AddressSpace;
|
||||
HandlerObj = RegionObj->Region.Handler;
|
||||
if (!HandlerObj)
|
||||
{
|
||||
/* This region has no handler, all done */
|
||||
@ -554,7 +557,7 @@ AcpiEvDetachRegion(
|
||||
|
||||
RegionSetup = HandlerObj->AddressSpace.Setup;
|
||||
Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE,
|
||||
HandlerObj->AddressSpace.Context, &RegionContext);
|
||||
HandlerObj->AddressSpace.Context, RegionContext);
|
||||
|
||||
/* Init routine may fail, Just ignore errors */
|
||||
|
||||
@ -577,7 +580,7 @@ AcpiEvDetachRegion(
|
||||
* If the region is on the handler's list
|
||||
* this better be the region's handler
|
||||
*/
|
||||
RegionObj->Region.AddressSpace = NULL;
|
||||
RegionObj->Region.Handler = NULL;
|
||||
AcpiUtRemoveReference (HandlerObj);
|
||||
|
||||
return_VOID;
|
||||
@ -620,17 +623,15 @@ AcpiEvAttachRegion (
|
||||
ACPI_OPERAND_OBJECT *RegionObj,
|
||||
BOOLEAN AcpiNsIsLocked)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_STATUS Status2;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("EvAttachRegion");
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
|
||||
"Adding Region %p to address handler %p [%s]\n",
|
||||
RegionObj, HandlerObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId)));
|
||||
|
||||
"Adding Region [%4.4s] %p to address handler %p [%s]\n",
|
||||
AcpiUtGetNodeName (RegionObj->Region.Node),
|
||||
RegionObj, HandlerObj,
|
||||
AcpiUtGetRegionName (RegionObj->Region.SpaceId)));
|
||||
|
||||
/* Link this region to the front of the handler's list */
|
||||
|
||||
@ -639,39 +640,15 @@ AcpiEvAttachRegion (
|
||||
|
||||
/* Install the region's handler */
|
||||
|
||||
if (RegionObj->Region.AddressSpace)
|
||||
if (RegionObj->Region.Handler)
|
||||
{
|
||||
return_ACPI_STATUS (AE_ALREADY_EXISTS);
|
||||
}
|
||||
|
||||
RegionObj->Region.AddressSpace = HandlerObj;
|
||||
RegionObj->Region.Handler = HandlerObj;
|
||||
AcpiUtAddReference (HandlerObj);
|
||||
|
||||
/*
|
||||
* Tell all users that this region is usable by running the _REG
|
||||
* method
|
||||
*/
|
||||
if (AcpiNsIsLocked)
|
||||
{
|
||||
Status2 = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status2))
|
||||
{
|
||||
return_ACPI_STATUS (Status2);
|
||||
}
|
||||
}
|
||||
|
||||
Status = AcpiEvExecuteRegMethod (RegionObj, 1);
|
||||
|
||||
if (AcpiNsIsLocked)
|
||||
{
|
||||
Status2 = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status2))
|
||||
{
|
||||
return_ACPI_STATUS (Status2);
|
||||
}
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
@ -679,9 +656,7 @@ AcpiEvAttachRegion (
|
||||
*
|
||||
* FUNCTION: AcpiEvInstallHandler
|
||||
*
|
||||
* PARAMETERS: Handle - Node to be dumped
|
||||
* Level - Nesting level of the handle
|
||||
* Context - Passed into AcpiNsWalkNamespace
|
||||
* PARAMETERS: WalkNamespace callback
|
||||
*
|
||||
* DESCRIPTION: This routine installs an address handler into objects that are
|
||||
* of type Region or Device.
|
||||
@ -755,7 +730,7 @@ AcpiEvInstallHandler (
|
||||
{
|
||||
/* Check if this Device already has a handler for this address space */
|
||||
|
||||
NextHandlerObj = ObjDesc->Device.AddressSpace;
|
||||
NextHandlerObj = ObjDesc->Device.Handler;
|
||||
while (NextHandlerObj)
|
||||
{
|
||||
/* Found a handler, is it for the same address space? */
|
||||
@ -815,4 +790,82 @@ AcpiEvInstallHandler (
|
||||
return (Status);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiEvRegRun
|
||||
*
|
||||
* PARAMETERS: WalkNamespace callback
|
||||
*
|
||||
* DESCRIPTION: Run _REG method for region objects of the requested spaceID
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEvRegRun (
|
||||
ACPI_HANDLE ObjHandle,
|
||||
UINT32 Level,
|
||||
void *Context,
|
||||
void **ReturnValue)
|
||||
{
|
||||
ACPI_OPERAND_OBJECT *HandlerObj;
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("EvRegRun");
|
||||
|
||||
|
||||
HandlerObj = (ACPI_OPERAND_OBJECT *) Context;
|
||||
|
||||
/* Parameter validation */
|
||||
|
||||
if (!HandlerObj)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Convert and validate the device handle */
|
||||
|
||||
Node = AcpiNsMapHandleToNode (ObjHandle);
|
||||
if (!Node)
|
||||
{
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/*
|
||||
* We only care about regions.and objects
|
||||
* that are allowed to have address space handlers
|
||||
*/
|
||||
if ((Node->Type != ACPI_TYPE_REGION) &&
|
||||
(Node != AcpiGbl_RootNode))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Check for an existing internal object */
|
||||
|
||||
ObjDesc = AcpiNsGetAttachedObject (Node);
|
||||
if (!ObjDesc)
|
||||
{
|
||||
/* No object, just exit */
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/* Object is a Region */
|
||||
|
||||
if (ObjDesc->Region.SpaceId != HandlerObj->AddressSpace.SpaceId)
|
||||
{
|
||||
/*
|
||||
* This region is for a different address space
|
||||
* -- just ignore it
|
||||
*/
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
Status = AcpiEvExecuteRegMethod (ObjDesc, 1);
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: evrgnini- ACPI AddressSpace (OpRegion) init
|
||||
* $Revision: 69 $
|
||||
* $Revision: 72 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -257,7 +257,7 @@ AcpiEvPciConfigRegionSetup (
|
||||
ACPI_FUNCTION_TRACE ("EvPciConfigRegionSetup");
|
||||
|
||||
|
||||
HandlerObj = RegionObj->Region.AddressSpace;
|
||||
HandlerObj = RegionObj->Region.Handler;
|
||||
if (!HandlerObj)
|
||||
{
|
||||
/*
|
||||
@ -329,7 +329,7 @@ AcpiEvPciConfigRegionSetup (
|
||||
{
|
||||
ACPI_REPORT_ERROR ((
|
||||
"Could not install PciConfig handler for Root Bridge %4.4s, %s\n",
|
||||
PciRootNode->Name.Ascii, AcpiFormatException (Status)));
|
||||
AcpiUtGetNodeName (PciRootNode), AcpiFormatException (Status)));
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -570,7 +570,7 @@ AcpiEvInitializeRegion (
|
||||
|
||||
/* Setup defaults */
|
||||
|
||||
RegionObj->Region.AddressSpace = NULL;
|
||||
RegionObj->Region.Handler = NULL;
|
||||
RegionObj2->Extra.Method_REG = NULL;
|
||||
RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE);
|
||||
RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED;
|
||||
@ -607,17 +607,17 @@ AcpiEvInitializeRegion (
|
||||
{
|
||||
case ACPI_TYPE_DEVICE:
|
||||
|
||||
HandlerObj = ObjDesc->Device.AddressSpace;
|
||||
HandlerObj = ObjDesc->Device.Handler;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_PROCESSOR:
|
||||
|
||||
HandlerObj = ObjDesc->Processor.AddressSpace;
|
||||
HandlerObj = ObjDesc->Processor.Handler;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_THERMAL:
|
||||
|
||||
HandlerObj = ObjDesc->ThermalZone.AddressSpace;
|
||||
HandlerObj = ObjDesc->ThermalZone.Handler;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -640,6 +640,30 @@ AcpiEvInitializeRegion (
|
||||
Status = AcpiEvAttachRegion (HandlerObj, RegionObj,
|
||||
AcpiNsLocked);
|
||||
|
||||
/*
|
||||
* Tell all users that this region is usable by running the _REG
|
||||
* method
|
||||
*/
|
||||
if (AcpiNsLocked)
|
||||
{
|
||||
Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
Status = AcpiEvExecuteRegMethod (RegionObj, 1);
|
||||
|
||||
if (AcpiNsLocked)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: evxfregn - External Interfaces, ACPI Operation Regions and
|
||||
* Address Spaces.
|
||||
* $Revision: 56 $
|
||||
* $Revision: 59 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -255,7 +255,7 @@ AcpiInstallAddressSpaceHandler (
|
||||
* The attached device object already exists.
|
||||
* Make sure the handler is not already installed.
|
||||
*/
|
||||
HandlerObj = ObjDesc->Device.AddressSpace;
|
||||
HandlerObj = ObjDesc->Device.Handler;
|
||||
|
||||
/* Walk the handler list for this device */
|
||||
|
||||
@ -331,7 +331,8 @@ AcpiInstallAddressSpaceHandler (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
|
||||
"Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n",
|
||||
AcpiUtGetRegionName (SpaceId), SpaceId, Node->Name.Ascii, Node, ObjDesc));
|
||||
AcpiUtGetRegionName (SpaceId), SpaceId,
|
||||
AcpiUtGetNodeName (Node), Node, ObjDesc));
|
||||
|
||||
/*
|
||||
* Install the handler
|
||||
@ -359,13 +360,13 @@ AcpiInstallAddressSpaceHandler (
|
||||
|
||||
/* Install at head of Device.AddressSpace list */
|
||||
|
||||
HandlerObj->AddressSpace.Next = ObjDesc->Device.AddressSpace;
|
||||
HandlerObj->AddressSpace.Next = ObjDesc->Device.Handler;
|
||||
|
||||
/*
|
||||
* The Device object is the first reference on the HandlerObj.
|
||||
* Each region that uses the handler adds a reference.
|
||||
*/
|
||||
ObjDesc->Device.AddressSpace = HandlerObj;
|
||||
ObjDesc->Device.Handler = HandlerObj;
|
||||
|
||||
/*
|
||||
* Walk the namespace finding all of the regions this
|
||||
@ -383,6 +384,17 @@ AcpiInstallAddressSpaceHandler (
|
||||
ACPI_NS_WALK_UNLOCK, AcpiEvInstallHandler,
|
||||
HandlerObj, NULL);
|
||||
|
||||
/*
|
||||
* Now we can run the _REG methods for all Regions for this
|
||||
* space ID. This is a separate walk in order to handle any
|
||||
* interdependencies between regions and _REG methods. (i.e. handlers
|
||||
* must be installed for all regions of this Space ID before we
|
||||
* can run any _REG methods.
|
||||
*/
|
||||
Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Device, ACPI_UINT32_MAX,
|
||||
ACPI_NS_WALK_UNLOCK, AcpiEvRegRun,
|
||||
HandlerObj, NULL);
|
||||
|
||||
UnlockAndExit:
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -453,8 +465,8 @@ AcpiRemoveAddressSpaceHandler (
|
||||
|
||||
/* Find the address handler the user requested */
|
||||
|
||||
HandlerObj = ObjDesc->Device.AddressSpace;
|
||||
LastObjPtr = &ObjDesc->Device.AddressSpace;
|
||||
HandlerObj = ObjDesc->Device.Handler;
|
||||
LastObjPtr = &ObjDesc->Device.Handler;
|
||||
while (HandlerObj)
|
||||
{
|
||||
/* We have a handler, see if user requested this one */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
|
||||
* $Revision: 72 $
|
||||
* $Revision: 74 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -168,6 +168,9 @@ AcpiExAddTable (
|
||||
|
||||
/* Install the new table into the local data structures */
|
||||
|
||||
ACPI_MEMSET (&TableInfo, 0, sizeof (ACPI_TABLE_DESC));
|
||||
|
||||
TableInfo.Type = 5;
|
||||
TableInfo.Pointer = Table;
|
||||
TableInfo.Length = (ACPI_SIZE) Table->Length;
|
||||
TableInfo.Allocation = ACPI_MEM_ALLOCATED;
|
||||
@ -259,7 +262,7 @@ AcpiExLoadTableOp (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Not found, return an Integer=0 and AE_OK */
|
||||
/* Table not found, return an Integer=0 and AE_OK */
|
||||
|
||||
DdbHandle = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER);
|
||||
if (!DdbHandle)
|
||||
@ -338,9 +341,11 @@ AcpiExLoadTableOp (
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
(void) AcpiExUnloadTable (DdbHandle);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
*ReturnDesc = DdbHandle;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -519,7 +524,7 @@ ACPI_STATUS
|
||||
AcpiExUnloadTable (
|
||||
ACPI_OPERAND_OBJECT *DdbHandle)
|
||||
{
|
||||
ACPI_STATUS Status = AE_NOT_IMPLEMENTED;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
ACPI_OPERAND_OBJECT *TableDesc = DdbHandle;
|
||||
ACPI_TABLE_DESC *TableInfo;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: excreate - Named object creation
|
||||
* $Revision: 99 $
|
||||
* $Revision: 100 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -367,7 +367,7 @@ AcpiExCreateRegion (
|
||||
ACPI_FUNCTION_TRACE ("ExCreateRegion");
|
||||
|
||||
|
||||
/* Get the Node from the object stack */
|
||||
/* Get the Namespace Node */
|
||||
|
||||
Node = WalkState->Op->Common.Node;
|
||||
|
||||
@ -394,7 +394,6 @@ AcpiExCreateRegion (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (%X)\n",
|
||||
AcpiUtGetRegionName (RegionSpace), RegionSpace));
|
||||
|
||||
|
||||
/* Create the region descriptor */
|
||||
|
||||
ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION);
|
||||
@ -459,6 +458,7 @@ AcpiExCreateTableRegion (
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExCreateTableRegion");
|
||||
|
||||
|
||||
/* Get the Node from the object stack */
|
||||
|
||||
Node = WalkState->Op->Common.Node;
|
||||
@ -477,7 +477,6 @@ AcpiExCreateTableRegion (
|
||||
Status = AcpiTbFindTable (Operand[1]->String.Pointer,
|
||||
Operand[2]->String.Pointer,
|
||||
Operand[3]->String.Pointer, &Table);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -581,7 +580,6 @@ AcpiExCreateProcessor (
|
||||
Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0],
|
||||
ObjDesc, ACPI_TYPE_PROCESSOR);
|
||||
|
||||
|
||||
/* Remove local reference to the object */
|
||||
|
||||
AcpiUtRemoveReference (ObjDesc);
|
||||
@ -633,7 +631,6 @@ AcpiExCreatePowerResource (
|
||||
Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0],
|
||||
ObjDesc, ACPI_TYPE_POWER);
|
||||
|
||||
|
||||
/* Remove local reference to the object */
|
||||
|
||||
AcpiUtRemoveReference (ObjDesc);
|
||||
@ -704,7 +701,6 @@ AcpiExCreateMethod (
|
||||
ObjDesc->Method.Concurrency = (UINT8)
|
||||
(((MethodFlags & METHOD_FLAGS_SYNCH_LEVEL) >> 4) + 1);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
ObjDesc->Method.Concurrency = INFINITE_CONCURRENCY;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exdump - Interpreter debug output routines
|
||||
* $Revision: 167 $
|
||||
* $Revision: 171 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -165,29 +165,29 @@ AcpiExDumpOperand (
|
||||
if (!ObjDesc)
|
||||
{
|
||||
/*
|
||||
* This usually indicates that something serious is wrong --
|
||||
* since most (if not all)
|
||||
* code that dumps the stack expects something to be there!
|
||||
* This usually indicates that something serious is wrong
|
||||
*/
|
||||
AcpiOsPrintf ("Null stack entry ptr\n");
|
||||
AcpiOsPrintf ("Null Object Descriptor\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p NS Node: ", ObjDesc));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p is a NS Node: ", ObjDesc));
|
||||
ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p is not a local object\n", ObjDesc));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"%p is not a node or operand object: [%s]\n",
|
||||
ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
|
||||
ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
|
||||
return;
|
||||
}
|
||||
|
||||
/* ObjDesc is a valid object */
|
||||
/* ObjDesc is a valid object */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc));
|
||||
|
||||
@ -232,11 +232,10 @@ AcpiExDumpOperand (
|
||||
|
||||
if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER)
|
||||
{
|
||||
/* Value is a Number */
|
||||
/* Value is an Integer */
|
||||
|
||||
AcpiOsPrintf (" value is [%8.8X%8.8x]",
|
||||
ACPI_HIDWORD(ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD(ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
@ -251,11 +250,10 @@ AcpiExDumpOperand (
|
||||
if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER)
|
||||
{
|
||||
|
||||
/* Value is a Number */
|
||||
/* Value is an Integer */
|
||||
|
||||
AcpiOsPrintf (" value is [%8.8X%8.8x]",
|
||||
ACPI_HIDWORD(ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD(ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
@ -271,7 +269,7 @@ AcpiExDumpOperand (
|
||||
|
||||
default:
|
||||
|
||||
/* unknown opcode */
|
||||
/* Unknown opcode */
|
||||
|
||||
AcpiOsPrintf ("Unknown Reference opcode=%X\n",
|
||||
ObjDesc->Reference.Opcode);
|
||||
@ -314,8 +312,7 @@ AcpiExDumpOperand (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf ("Integer %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD (ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
@ -360,8 +357,7 @@ AcpiExDumpOperand (
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
|
||||
ACPI_HIDWORD (ObjDesc->Region.Address),
|
||||
ACPI_LODWORD (ObjDesc->Region.Address),
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
|
||||
ObjDesc->Region.Length);
|
||||
}
|
||||
break;
|
||||
@ -590,7 +586,7 @@ AcpiExOutAddress (
|
||||
AcpiOsPrintf ("%20s : %p\n", Title, Value);
|
||||
#else
|
||||
AcpiOsPrintf ("%20s : %8.8X%8.8X\n", Title,
|
||||
ACPI_HIDWORD (Value), ACPI_LODWORD (Value));
|
||||
ACPI_FORMAT_UINT64 (Value));
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -623,7 +619,7 @@ AcpiExDumpNode (
|
||||
}
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("%20s : %4.4s\n", "Name", Node->Name.Ascii);
|
||||
AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
|
||||
AcpiExOutString ("Type", AcpiUtGetTypeName (Node->Type));
|
||||
AcpiExOutInteger ("Flags", Node->Flags);
|
||||
AcpiExOutInteger ("Owner Id", Node->OwnerId);
|
||||
@ -675,7 +671,8 @@ AcpiExDumpObjectDescriptor (
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
|
||||
{
|
||||
AcpiOsPrintf ("ExDumpObjectDescriptor: %p is not a valid ACPI object\n", ObjDesc);
|
||||
AcpiOsPrintf ("ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n",
|
||||
ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
@ -692,8 +689,7 @@ AcpiExDumpObjectDescriptor (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
|
||||
ACPI_HIDWORD (ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD (ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
@ -741,7 +737,7 @@ AcpiExDumpObjectDescriptor (
|
||||
|
||||
case ACPI_TYPE_DEVICE:
|
||||
|
||||
AcpiExOutPointer ("AddressSpace", ObjDesc->Device.AddressSpace);
|
||||
AcpiExOutPointer ("Handler", ObjDesc->Device.Handler);
|
||||
AcpiExOutPointer ("SystemNotify", ObjDesc->Device.SystemNotify);
|
||||
AcpiExOutPointer ("DeviceNotify", ObjDesc->Device.DeviceNotify);
|
||||
break;
|
||||
@ -779,7 +775,7 @@ AcpiExDumpObjectDescriptor (
|
||||
AcpiExOutInteger ("Flags", ObjDesc->Region.Flags);
|
||||
AcpiExOutAddress ("Address", ObjDesc->Region.Address);
|
||||
AcpiExOutInteger ("Length", ObjDesc->Region.Length);
|
||||
AcpiExOutPointer ("AddressSpace", ObjDesc->Region.AddressSpace);
|
||||
AcpiExOutPointer ("Handler", ObjDesc->Region.Handler);
|
||||
AcpiExOutPointer ("Next", ObjDesc->Region.Next);
|
||||
break;
|
||||
|
||||
@ -800,7 +796,7 @@ AcpiExDumpObjectDescriptor (
|
||||
AcpiExOutAddress ("Address", (ACPI_PHYSICAL_ADDRESS) ObjDesc->Processor.Address);
|
||||
AcpiExOutPointer ("SystemNotify", ObjDesc->Processor.SystemNotify);
|
||||
AcpiExOutPointer ("DeviceNotify", ObjDesc->Processor.DeviceNotify);
|
||||
AcpiExOutPointer ("AddressSpace", ObjDesc->Processor.AddressSpace);
|
||||
AcpiExOutPointer ("Handler", ObjDesc->Processor.Handler);
|
||||
break;
|
||||
|
||||
|
||||
@ -808,7 +804,7 @@ AcpiExDumpObjectDescriptor (
|
||||
|
||||
AcpiExOutPointer ("SystemNotify", ObjDesc->ThermalZone.SystemNotify);
|
||||
AcpiExOutPointer ("DeviceNotify", ObjDesc->ThermalZone.DeviceNotify);
|
||||
AcpiExOutPointer ("AddressSpace", ObjDesc->ThermalZone.AddressSpace);
|
||||
AcpiExOutPointer ("Handler", ObjDesc->ThermalZone.Handler);
|
||||
break;
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exfield - ACPI AML (p-code) execution - field manipulation
|
||||
* $Revision: 118 $
|
||||
* $Revision: 119 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -245,10 +245,10 @@ AcpiExReadDataFromField (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Obj=%p Type=%X Buf=%p Len=%X\n",
|
||||
"FieldRead [TO]: Obj %p, Type %X, Buf %p, ByteLen %X\n",
|
||||
ObjDesc, ACPI_GET_OBJECT_TYPE (ObjDesc), Buffer, (UINT32) Length));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"FieldWrite: BitLen=%X BitOff=%X ByteOff=%X\n",
|
||||
"FieldRead [FROM]: BitLen %X, BitOff %X, ByteOff %X\n",
|
||||
ObjDesc->CommonField.BitLength,
|
||||
ObjDesc->CommonField.StartFieldBitOffset,
|
||||
ObjDesc->CommonField.BaseByteOffset));
|
||||
@ -433,10 +433,13 @@ AcpiExWriteDataToField (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Obj=%p Type=%X Buf=%p Len=%X\n",
|
||||
ObjDesc, ACPI_GET_OBJECT_TYPE (ObjDesc), Buffer, Length));
|
||||
"FieldWrite [FROM]: Obj %p (%s:%X), Buf %p, ByteLen %X\n",
|
||||
SourceDesc, AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (SourceDesc)),
|
||||
ACPI_GET_OBJECT_TYPE (SourceDesc), Buffer, Length));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"FieldRead: BitLen=%X BitOff=%X ByteOff=%X\n",
|
||||
"FieldWrite [TO]: Obj %p (%s:%X), BitLen %X, BitOff %X, ByteOff %X\n",
|
||||
ObjDesc, AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (ObjDesc)),
|
||||
ACPI_GET_OBJECT_TYPE (ObjDesc),
|
||||
ObjDesc->CommonField.BitLength,
|
||||
ObjDesc->CommonField.StartFieldBitOffset,
|
||||
ObjDesc->CommonField.BaseByteOffset));
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
|
||||
* $Revision: 115 $
|
||||
* $Revision: 116 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -199,8 +199,8 @@ AcpiExGetObjectReference (
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid descriptor type %X in %p\n",
|
||||
ACPI_GET_DESCRIPTOR_TYPE (ObjDesc), ObjDesc));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p has invalid descriptor [%s]\n",
|
||||
ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@ AcpiExGetObjectReference (
|
||||
*ReturnDesc = ReferenceObj;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Object %p Type [%s], returning Reference %p\n",
|
||||
ObjDesc, AcpiUtGetObjectTypeName (ObjDesc), *ReturnDesc));
|
||||
ObjDesc, AcpiUtGetObjectTypeName (ObjDesc), *ReturnDesc));
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exmutex - ASL Mutex Acquire/Release functions
|
||||
* $Revision: 18 $
|
||||
* $Revision: 19 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -240,7 +240,7 @@ AcpiExAcquireMutex (
|
||||
if (!WalkState->Thread)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Cannot acquire Mutex [%4.4s], null thread info\n",
|
||||
ObjDesc->Mutex.Node->Name.Ascii));
|
||||
AcpiUtGetNodeName (ObjDesc->Mutex.Node)));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
@ -251,7 +251,7 @@ AcpiExAcquireMutex (
|
||||
if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Cannot acquire Mutex [%4.4s], incorrect SyncLevel\n",
|
||||
ObjDesc->Mutex.Node->Name.Ascii));
|
||||
AcpiUtGetNodeName (ObjDesc->Mutex.Node)));
|
||||
return_ACPI_STATUS (AE_AML_MUTEX_ORDER);
|
||||
}
|
||||
|
||||
@ -328,7 +328,7 @@ AcpiExReleaseMutex (
|
||||
if (!ObjDesc->Mutex.OwnerThread)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], not acquired\n",
|
||||
ObjDesc->Mutex.Node->Name.Ascii));
|
||||
AcpiUtGetNodeName (ObjDesc->Mutex.Node)));
|
||||
return_ACPI_STATUS (AE_AML_MUTEX_NOT_ACQUIRED);
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@ AcpiExReleaseMutex (
|
||||
if (!WalkState->Thread)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], null thread info\n",
|
||||
ObjDesc->Mutex.Node->Name.Ascii));
|
||||
AcpiUtGetNodeName (ObjDesc->Mutex.Node)));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
@ -348,7 +348,7 @@ AcpiExReleaseMutex (
|
||||
ACPI_REPORT_ERROR ((
|
||||
"Thread %X cannot release Mutex [%4.4s] acquired by thread %X\n",
|
||||
WalkState->Thread->ThreadId,
|
||||
ObjDesc->Mutex.Node->Name.Ascii,
|
||||
AcpiUtGetNodeName (ObjDesc->Mutex.Node),
|
||||
ObjDesc->Mutex.OwnerThread->ThreadId));
|
||||
return_ACPI_STATUS (AE_AML_NOT_OWNER);
|
||||
}
|
||||
@ -360,7 +360,7 @@ AcpiExReleaseMutex (
|
||||
if (ObjDesc->Mutex.SyncLevel > WalkState->Thread->CurrentSyncLevel)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Cannot release Mutex [%4.4s], incorrect SyncLevel\n",
|
||||
ObjDesc->Mutex.Node->Name.Ascii));
|
||||
AcpiUtGetNodeName (ObjDesc->Mutex.Node)));
|
||||
return_ACPI_STATUS (AE_AML_MUTEX_ORDER);
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exoparg1 - AML execution - opcodes with 1 argument
|
||||
* $Revision: 148 $
|
||||
* $Revision: 151 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -392,7 +392,7 @@ AcpiExOpcode_1A_1T_1R (
|
||||
|
||||
if (Temp32 > 9)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"BCD digit too large (not decimal): 0x%X\n",
|
||||
Temp32));
|
||||
|
||||
@ -436,8 +436,7 @@ AcpiExOpcode_1A_1T_1R (
|
||||
if (Digit > 0)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Integer too large to convert to BCD: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD(Operand[0]->Integer.Value),
|
||||
ACPI_LODWORD(Operand[0]->Integer.Value)));
|
||||
ACPI_FORMAT_UINT64 (Operand[0]->Integer.Value)));
|
||||
Status = AE_AML_NUMERIC_OVERFLOW;
|
||||
goto Cleanup;
|
||||
}
|
||||
@ -615,7 +614,7 @@ AcpiExOpcode_1A_0T_1R (
|
||||
ACPI_INTEGER Value;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode));
|
||||
ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_0T_1R", AcpiPsGetOpcodeName (WalkState->Opcode));
|
||||
|
||||
|
||||
/* Examine the AML opcode */
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exoparg3 - AML execution - opcodes with 3 arguments
|
||||
* $Revision: 17 $
|
||||
* $Revision: 18 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -177,15 +177,14 @@ AcpiExOpcode_3A_0T_0R (
|
||||
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
|
||||
case AML_FATAL_OP: /* Fatal (FatalType FatalCode FatalArg) */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"FatalOp: Type %X Code %X Arg %X <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
|
||||
(UINT32) Operand[0]->Integer.Value, (UINT32) Operand[1]->Integer.Value,
|
||||
(UINT32) Operand[0]->Integer.Value,
|
||||
(UINT32) Operand[1]->Integer.Value,
|
||||
(UINT32) Operand[2]->Integer.Value));
|
||||
|
||||
|
||||
Fatal = ACPI_MEM_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO));
|
||||
if (Fatal)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exprep - ACPI AML (p-code) execution - field prep utilities
|
||||
* $Revision: 122 $
|
||||
* $Revision: 125 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -127,6 +127,139 @@
|
||||
ACPI_MODULE_NAME ("exprep")
|
||||
|
||||
|
||||
#ifdef ACPI_UNDER_DEVELOPMENT
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExGenerateAccess
|
||||
*
|
||||
* PARAMETERS: FieldBitOffset - Start of field within parent region/buffer
|
||||
* FieldBitLength - Length of field in bits
|
||||
* RegionLength - Length of parent in bytes
|
||||
*
|
||||
* RETURN: Field granularity (8, 16, 32 or 64) and
|
||||
* ByteAlignment (1, 2, 3, or 4)
|
||||
*
|
||||
* DESCRIPTION: Generate an optimal access width for fields defined with the
|
||||
* AnyAcc keyword.
|
||||
*
|
||||
* NOTE: Need to have the RegionLength in order to check for boundary
|
||||
* conditions (end-of-region). However, the RegionLength is a deferred
|
||||
* operation. Therefore, to complete this implementation, the generation
|
||||
* of this access width must be deferred until the region length has
|
||||
* been evaluated.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static UINT32
|
||||
AcpiExGenerateAccess (
|
||||
UINT32 FieldBitOffset,
|
||||
UINT32 FieldBitLength,
|
||||
UINT32 RegionLength)
|
||||
{
|
||||
UINT32 FieldByteLength;
|
||||
UINT32 FieldByteOffset;
|
||||
UINT32 FieldByteEndOffset;
|
||||
UINT32 AccessByteWidth;
|
||||
UINT32 FieldStartOffset;
|
||||
UINT32 FieldEndOffset;
|
||||
UINT32 MinimumAccessWidth = 0xFFFFFFFF;
|
||||
UINT32 MinimumAccesses = 0xFFFFFFFF;
|
||||
UINT32 Accesses;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("ExGenerateAccess");
|
||||
|
||||
|
||||
/* Round Field start offset and length to "minimal" byte boundaries */
|
||||
|
||||
FieldByteOffset = ACPI_DIV_8 (ACPI_ROUND_DOWN (FieldBitOffset, 8));
|
||||
FieldByteEndOffset = ACPI_DIV_8 (ACPI_ROUND_UP (FieldBitLength + FieldBitOffset, 8));
|
||||
FieldByteLength = FieldByteEndOffset - FieldByteOffset;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Bit length %d, Bit offset %d\n",
|
||||
FieldBitLength, FieldBitOffset));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Byte Length %d, Byte Offset %d, End Offset %d\n",
|
||||
FieldByteLength, FieldByteOffset, FieldByteEndOffset));
|
||||
|
||||
/*
|
||||
* Iterative search for the maximum access width that is both aligned
|
||||
* and does not go beyond the end of the region
|
||||
*
|
||||
* Start at ByteAcc and work upwards to QwordAcc max. (1,2,4,8 bytes)
|
||||
*/
|
||||
for (AccessByteWidth = 1; AccessByteWidth <= 8; AccessByteWidth <<= 1)
|
||||
{
|
||||
/*
|
||||
* 1) Round end offset up to next access boundary and make sure that this
|
||||
* does not go beyond the end of the parent region.
|
||||
* 2) When the Access width is greater than the FieldByteLength, we are done.
|
||||
* (This does not optimize for the perfectly aligned case yet).
|
||||
*/
|
||||
if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= RegionLength)
|
||||
{
|
||||
FieldStartOffset = ACPI_ROUND_DOWN (FieldByteOffset, AccessByteWidth) /
|
||||
AccessByteWidth;
|
||||
FieldEndOffset = ACPI_ROUND_UP ((FieldByteLength + FieldByteOffset),
|
||||
AccessByteWidth) / AccessByteWidth;
|
||||
Accesses = FieldEndOffset - FieldStartOffset;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"AccessWidth %d end is within region\n", AccessByteWidth));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Field Start %d, Field End %d -- requires %d accesses\n",
|
||||
FieldStartOffset, FieldEndOffset, Accesses));
|
||||
|
||||
/* Single access is optimal */
|
||||
|
||||
if (Accesses <= 1)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Entire field can be accessed with one operation of size %d\n",
|
||||
AccessByteWidth));
|
||||
return_VALUE (AccessByteWidth);
|
||||
}
|
||||
|
||||
/*
|
||||
* Fits in the region, but requires more than one read/write.
|
||||
* try the next wider access on next iteration
|
||||
*/
|
||||
if (Accesses < MinimumAccesses)
|
||||
{
|
||||
MinimumAccesses = Accesses;
|
||||
MinimumAccessWidth = AccessByteWidth;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"AccessWidth %d end is NOT within region\n", AccessByteWidth));
|
||||
if (AccessByteWidth == 1)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Field goes beyond end-of-region!\n"));
|
||||
return_VALUE (0); /* Field does not fit in the region at all */
|
||||
}
|
||||
|
||||
/* This width goes beyond the end-of-region, back off to previous access */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Backing off to previous optimal access width of %d\n",
|
||||
MinimumAccessWidth));
|
||||
return_VALUE (MinimumAccessWidth);
|
||||
}
|
||||
}
|
||||
|
||||
/* Could not read/write field with one operation, just use max access width */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Cannot access field in one operation, using width 8\n"));
|
||||
return_VALUE (8);
|
||||
}
|
||||
#endif /* ACPI_UNDER_DEVELOPMENT */
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiExDecodeFieldAccess
|
||||
@ -148,12 +281,11 @@ AcpiExDecodeFieldAccess (
|
||||
UINT32 *ReturnByteAlignment)
|
||||
{
|
||||
UINT32 Access;
|
||||
UINT8 ByteAlignment;
|
||||
UINT8 BitLength;
|
||||
/* UINT32 Length; */
|
||||
UINT32 ByteAlignment;
|
||||
UINT32 BitLength;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("ExDecodeFieldAccess");
|
||||
ACPI_FUNCTION_TRACE ("ExDecodeFieldAccess");
|
||||
|
||||
|
||||
Access = (FieldFlags & AML_FIELD_ACCESS_TYPE_MASK);
|
||||
@ -162,46 +294,15 @@ AcpiExDecodeFieldAccess (
|
||||
{
|
||||
case AML_FIELD_ACCESS_ANY:
|
||||
|
||||
#ifdef ACPI_UNDER_DEVELOPMENT
|
||||
ByteAlignment = AcpiExGenerateAccess (ObjDesc->CommonField.StartFieldBitOffset,
|
||||
ObjDesc->CommonField.BitLength,
|
||||
0xFFFFFFFF /* Temp until we pass RegionLength as param */);
|
||||
BitLength = ByteAlignment * 8;
|
||||
#endif
|
||||
|
||||
ByteAlignment = 1;
|
||||
BitLength = 8;
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* TBD: optimize
|
||||
*
|
||||
* Any attempt to optimize the access size to the size of the field
|
||||
* must take into consideration the length of the region and take
|
||||
* care that an access to the field will not attempt to access
|
||||
* beyond the end of the region.
|
||||
*/
|
||||
|
||||
/* Use the length to set the access type */
|
||||
|
||||
Length = ObjDesc->CommonField.BitLength;
|
||||
|
||||
if (Length <= 8)
|
||||
{
|
||||
BitLength = 8;
|
||||
}
|
||||
else if (Length <= 16)
|
||||
{
|
||||
BitLength = 16;
|
||||
}
|
||||
else if (Length <= 32)
|
||||
{
|
||||
BitLength = 32;
|
||||
}
|
||||
else if (Length <= 64)
|
||||
{
|
||||
BitLength = 64;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Larger than Qword - just use byte-size chunks */
|
||||
|
||||
BitLength = 8;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case AML_FIELD_ACCESS_BYTE:
|
||||
@ -231,7 +332,7 @@ AcpiExDecodeFieldAccess (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Unknown field access type %X\n",
|
||||
Access));
|
||||
return (0);
|
||||
return_VALUE (0);
|
||||
}
|
||||
|
||||
if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_BUFFER_FIELD)
|
||||
@ -245,7 +346,7 @@ AcpiExDecodeFieldAccess (
|
||||
}
|
||||
|
||||
*ReturnByteAlignment = ByteAlignment;
|
||||
return (BitLength);
|
||||
return_VALUE (BitLength);
|
||||
}
|
||||
|
||||
|
||||
@ -333,7 +434,7 @@ AcpiExPrepCommonFieldObject (
|
||||
*/
|
||||
NearestByteAddress =
|
||||
ACPI_ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition);
|
||||
ObjDesc->CommonField.BaseByteOffset =
|
||||
ObjDesc->CommonField.BaseByteOffset = (UINT32)
|
||||
ACPI_ROUND_DOWN (NearestByteAddress, ByteAlignment);
|
||||
|
||||
/*
|
||||
@ -422,7 +523,7 @@ AcpiExPrepFieldValue (
|
||||
if (Type != ACPI_TYPE_REGION)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Needed Region, found type %X %s\n",
|
||||
"Needed Region, found type %X (%s)\n",
|
||||
Type, AcpiUtGetTypeName (Type)));
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
@ -461,7 +562,7 @@ AcpiExPrepFieldValue (
|
||||
AcpiUtAddReference (ObjDesc->Field.RegionObj);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"RegionField: Bitoff=%X Off=%X Gran=%X Region %p\n",
|
||||
"RegionField: BitOff %X, Off %X, Gran %X, Region %p\n",
|
||||
ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset,
|
||||
ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj));
|
||||
break;
|
||||
@ -479,7 +580,7 @@ AcpiExPrepFieldValue (
|
||||
AcpiUtAddReference (ObjDesc->BankField.BankObj);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"Bank Field: BitOff=%X Off=%X Gran=%X Region %p BankReg %p\n",
|
||||
"Bank Field: BitOff %X, Off %X, Gran %X, Region %p, BankReg %p\n",
|
||||
ObjDesc->BankField.StartFieldBitOffset,
|
||||
ObjDesc->BankField.BaseByteOffset,
|
||||
ObjDesc->Field.AccessByteWidth,
|
||||
@ -507,9 +608,10 @@ AcpiExPrepFieldValue (
|
||||
AcpiUtAddReference (ObjDesc->IndexField.IndexObj);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||
"IndexField: bitoff=%X off=%X gran=%X Index %p Data %p\n",
|
||||
"IndexField: BitOff %X, Off %X, Value %X, Gran %X, Index %p, Data %p\n",
|
||||
ObjDesc->IndexField.StartFieldBitOffset,
|
||||
ObjDesc->IndexField.BaseByteOffset,
|
||||
ObjDesc->IndexField.Value,
|
||||
ObjDesc->Field.AccessByteWidth,
|
||||
ObjDesc->IndexField.IndexObj,
|
||||
ObjDesc->IndexField.DataObj));
|
||||
@ -527,8 +629,8 @@ AcpiExPrepFieldValue (
|
||||
Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc,
|
||||
AcpiNsGetType (Info->FieldNode));
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "set NamedObj %p (%4.4s) val = %p\n",
|
||||
Info->FieldNode, Info->FieldNode->Name.Ascii, ObjDesc));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Set NamedObj %p [%4.4s], ObjDesc %p\n",
|
||||
Info->FieldNode, AcpiUtGetNodeName (Info->FieldNode), ObjDesc));
|
||||
|
||||
/* Remove local reference to the object */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exregion - ACPI default OpRegion (address space) handlers
|
||||
* $Revision: 84 $
|
||||
* $Revision: 85 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -242,7 +242,7 @@ AcpiExSystemMemorySpaceHandler (
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %8.8X%8.8X, size %X\n",
|
||||
ACPI_HIDWORD (Address), ACPI_LODWORD (Address), (UINT32) WindowSize));
|
||||
ACPI_FORMAT_UINT64 (Address), (UINT32) WindowSize));
|
||||
MemInfo->MappedLength = 0;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
@ -261,8 +261,8 @@ AcpiExSystemMemorySpaceHandler (
|
||||
((ACPI_INTEGER) Address - (ACPI_INTEGER) MemInfo->MappedPhysicalAddress);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"SystemMemory %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth,
|
||||
ACPI_HIDWORD (Address), ACPI_LODWORD (Address)));
|
||||
"SystemMemory %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth,
|
||||
ACPI_FORMAT_UINT64 (Address)));
|
||||
|
||||
/*
|
||||
* Perform the memory read or write
|
||||
@ -374,8 +374,8 @@ AcpiExSystemIoSpaceHandler (
|
||||
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"SystemIO %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth,
|
||||
ACPI_HIDWORD (Address), ACPI_LODWORD (Address)));
|
||||
"SystemIO %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth,
|
||||
ACPI_FORMAT_UINT64 (Address)));
|
||||
|
||||
/* Decode the function parameter */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exresnte - AML Interpreter object resolution
|
||||
* $Revision: 62 $
|
||||
* $Revision: 63 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -121,6 +121,8 @@
|
||||
#include "acdispat.h"
|
||||
#include "acinterp.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acparser.h"
|
||||
#include "amlcode.h"
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_EXECUTER
|
||||
@ -327,12 +329,27 @@ AcpiExResolveNodeToValue (
|
||||
|
||||
case ACPI_TYPE_LOCAL_REFERENCE:
|
||||
|
||||
/* No named references are allowed here */
|
||||
switch (SourceDesc->Reference.Opcode)
|
||||
{
|
||||
case AML_LOAD_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported Reference opcode %X\n",
|
||||
SourceDesc->Reference.Opcode));
|
||||
/* This is a DdbHandle */
|
||||
/* Return an additional reference to the object */
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
ObjDesc = SourceDesc;
|
||||
AcpiUtAddReference (ObjDesc);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* No named references are allowed here */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported Reference opcode %X (%s)\n",
|
||||
SourceDesc->Reference.Opcode,
|
||||
AcpiPsGetOpcodeName (SourceDesc->Reference.Opcode)));
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
/* Default case is for unknown types */
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exresolv - AML Interpreter object resolution
|
||||
* $Revision: 119 $
|
||||
* $Revision: 121 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -122,6 +122,7 @@
|
||||
#include "acdispat.h"
|
||||
#include "acinterp.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acparser.h"
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_EXECUTER
|
||||
@ -333,6 +334,7 @@ AcpiExResolveObjectToValue (
|
||||
|
||||
case AML_REF_OF_OP:
|
||||
case AML_DEBUG_OP:
|
||||
case AML_LOAD_OP:
|
||||
|
||||
/* Just leave the object as-is */
|
||||
|
||||
@ -341,8 +343,8 @@ AcpiExResolveObjectToValue (
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Reference opcode %X in %p\n",
|
||||
Opcode, StackDesc));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Reference opcode %X (%s) in %p\n",
|
||||
Opcode, AcpiPsGetOpcodeName (Opcode), StackDesc));
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
}
|
||||
@ -435,6 +437,8 @@ AcpiExResolveMultiple (
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("AcpiExResolveMultiple: Not a NS node %p [%s]\n",
|
||||
Node, AcpiUtGetDescriptorName (Node)));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
@ -489,7 +493,9 @@ AcpiExResolveMultiple (
|
||||
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
ACPI_REPORT_ERROR (("AcpiExResolveMultiple: Not a NS node %p [%s]\n",
|
||||
Node, AcpiUtGetDescriptorName (Node)));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
/* Get the attached object */
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exresop - AML Interpreter operand/object resolution
|
||||
* $Revision: 62 $
|
||||
* $Revision: 65 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -311,6 +311,7 @@ AcpiExResolveOperands (
|
||||
case AML_REF_OF_OP:
|
||||
case AML_ARG_OP:
|
||||
case AML_LOCAL_OP:
|
||||
case AML_LOAD_OP: /* DdbHandle from LOAD_OP or LOAD_TABLE_OP */
|
||||
|
||||
ACPI_DEBUG_ONLY_MEMBERS (ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"Reference Opcode: %s\n", OpInfo->Name)));
|
||||
@ -318,8 +319,9 @@ AcpiExResolveOperands (
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Unknown Reference Opcode %X\n",
|
||||
ObjDesc->Reference.Opcode));
|
||||
"Unknown Reference Opcode %X [%s]\n",
|
||||
ObjDesc->Reference.Opcode,
|
||||
(AcpiPsGetOpcodeInfo (ObjDesc->Reference.Opcode))->Name));
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
@ -332,8 +334,8 @@ AcpiExResolveOperands (
|
||||
/* Invalid descriptor */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Bad descriptor type %X in Obj %p\n",
|
||||
ACPI_GET_DESCRIPTOR_TYPE (ObjDesc), ObjDesc));
|
||||
"Invalid descriptor %p [%s]\n",
|
||||
ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
@ -473,6 +475,13 @@ AcpiExResolveOperands (
|
||||
TypeNeeded = ACPI_TYPE_ANY;
|
||||
break;
|
||||
|
||||
case ARGI_DDBHANDLE:
|
||||
|
||||
/* Need an operand of type ACPI_TYPE_DDB_HANDLE */
|
||||
|
||||
TypeNeeded = ACPI_TYPE_LOCAL_REFERENCE;
|
||||
break;
|
||||
|
||||
|
||||
/*
|
||||
* The more complex cases allow multiple resolved object types
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exstore - AML Interpreter object store support
|
||||
* $Revision: 176 $
|
||||
* $Revision: 177 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -270,8 +270,7 @@ AcpiExStore (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (SourceDesc->Integer.Value),
|
||||
ACPI_LODWORD (SourceDesc->Integer.Value)));
|
||||
ACPI_FORMAT_UINT64 (SourceDesc->Integer.Value)));
|
||||
break;
|
||||
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Module Name: exstoren - AML Interpreter object store support,
|
||||
* Store to Node (namespace object)
|
||||
* $Revision: 55 $
|
||||
* $Revision: 56 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -120,6 +120,7 @@
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acinterp.h"
|
||||
#include "amlcode.h"
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_EXECUTER
|
||||
@ -191,9 +192,10 @@ AcpiExResolveObject (
|
||||
/*
|
||||
* Must have a Integer, Buffer, or String
|
||||
*/
|
||||
if ((ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_INTEGER) &&
|
||||
(ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER) &&
|
||||
(ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_STRING))
|
||||
if ((ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_INTEGER) &&
|
||||
(ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER) &&
|
||||
(ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_STRING) &&
|
||||
!((ACPI_GET_OBJECT_TYPE (SourceDesc) == ACPI_TYPE_LOCAL_REFERENCE) && (SourceDesc->Reference.Opcode == AML_LOAD_OP)))
|
||||
{
|
||||
/*
|
||||
* Conversion successful but still not a valid type
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: exutils - interpreter/scanner utilities
|
||||
* $Revision: 109 $
|
||||
* $Revision: 110 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -374,7 +374,7 @@ AcpiExDigitsNeeded (
|
||||
*/
|
||||
if ((CurrentValue = Value) == 0)
|
||||
{
|
||||
return_VALUE (1);
|
||||
return_VALUE (1);
|
||||
}
|
||||
|
||||
NumDigits = 0;
|
||||
|
@ -2,7 +2,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface
|
||||
* $Revision: 63 $
|
||||
* $Revision: 65 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -196,7 +196,7 @@ AcpiHwSetMode (
|
||||
*/
|
||||
if (!AcpiGbl_FADT->SmiCmd)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No SMI_CMD in FADT, mode transition failed.\n"));
|
||||
ACPI_REPORT_ERROR (("No SMI_CMD in FADT, mode transition failed.\n"));
|
||||
return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE);
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ AcpiHwSetMode (
|
||||
*/
|
||||
if (!AcpiGbl_FADT->AcpiEnable && !AcpiGbl_FADT->AcpiDisable)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "No mode transition supported in this system.\n"));
|
||||
ACPI_REPORT_ERROR (("No ACPI mode transition supported in this system (enable/disable both zero)\n"));
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
@ -242,6 +242,7 @@ AcpiHwSetMode (
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Could not write mode change, %s\n", AcpiFormatException (Status)));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
@ -252,19 +253,17 @@ AcpiHwSetMode (
|
||||
Retry = 3000;
|
||||
while (Retry)
|
||||
{
|
||||
Status = AE_NO_HARDWARE_RESPONSE;
|
||||
|
||||
if (AcpiHwGetMode() == Mode)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", Mode));
|
||||
Status = AE_OK;
|
||||
break;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
AcpiOsStall(1000);
|
||||
Retry--;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
ACPI_REPORT_ERROR (("Hardware never changed modes\n"));
|
||||
return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE);
|
||||
}
|
||||
|
||||
|
||||
@ -290,6 +289,16 @@ AcpiHwGetMode (void)
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwGetMode");
|
||||
|
||||
|
||||
/*
|
||||
* ACPI 2.0 clarified that if SMI_CMD in FADT is zero,
|
||||
* system does not support mode transition.
|
||||
*/
|
||||
if (!AcpiGbl_FADT->SmiCmd)
|
||||
{
|
||||
return_VALUE (ACPI_SYS_MODE_ACPI);
|
||||
}
|
||||
|
||||
Status = AcpiGetRegister (ACPI_BITREG_SCI_ENABLE, &Value, ACPI_MTX_LOCK);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Module Name: hwregs - Read/write access functions for the various ACPI
|
||||
* control and status registers.
|
||||
* $Revision: 149 $
|
||||
* $Revision: 152 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -389,7 +389,7 @@ AcpiGetRegister (
|
||||
|
||||
*ReturnValue = RegisterValue;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read value %8.8X register %X\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read value %8.8X register %X\n",
|
||||
RegisterValue, BitRegInfo->ParentRegister));
|
||||
}
|
||||
|
||||
@ -455,9 +455,9 @@ AcpiSetRegister (
|
||||
|
||||
/*
|
||||
* Decode the Register ID
|
||||
* Register id = Register block id | bit id
|
||||
* Register ID = [Register block ID] | [bit ID]
|
||||
*
|
||||
* Check bit id to fine locate Register offset.
|
||||
* Check bit ID to fine locate Register offset.
|
||||
* Check Mask to determine Register offset, and then read-write.
|
||||
*/
|
||||
switch (BitRegInfo->ParentRegister)
|
||||
@ -466,9 +466,9 @@ AcpiSetRegister (
|
||||
|
||||
/*
|
||||
* Status Registers are different from the rest. Clear by
|
||||
* writing 1, writing 0 has no effect. So, the only relevant
|
||||
* writing 1, and writing 0 has no effect. So, the only relevant
|
||||
* information is the single bit we're interested in, all others should
|
||||
* be written as 0 so they will be left unchanged
|
||||
* be written as 0 so they will be left unchanged.
|
||||
*/
|
||||
Value = ACPI_REGISTER_PREPARE_BITS (Value,
|
||||
BitRegInfo->BitPosition, BitRegInfo->AccessBitMask);
|
||||
@ -494,9 +494,9 @@ AcpiSetRegister (
|
||||
case ACPI_REGISTER_PM1_CONTROL:
|
||||
|
||||
/*
|
||||
* Read the PM1 Control register.
|
||||
* Write the PM1 Control register.
|
||||
* Note that at this level, the fact that there are actually TWO
|
||||
* registers (A and B - and that B may not exist) is abstracted.
|
||||
* registers (A and B - and B may not exist) is abstracted.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", RegisterValue));
|
||||
|
||||
@ -504,7 +504,7 @@ AcpiSetRegister (
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_CONTROL, (UINT16) RegisterValue);
|
||||
ACPI_REGISTER_PM1_CONTROL, (UINT16) RegisterValue);
|
||||
break;
|
||||
|
||||
|
||||
@ -519,16 +519,14 @@ AcpiSetRegister (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n",
|
||||
RegisterValue,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))));
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %4.4X to %8.8X%8.8X\n",
|
||||
RegisterValue,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))));
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address))));
|
||||
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM2_CONTROL, (UINT8) (RegisterValue));
|
||||
@ -842,7 +840,7 @@ AcpiHwLowLevelRead (
|
||||
|
||||
/*
|
||||
* Three address spaces supported:
|
||||
* Memory, Io, or PCI config.
|
||||
* Memory, IO, or PCI_Config.
|
||||
*/
|
||||
switch (Reg->AddressSpaceId)
|
||||
{
|
||||
@ -881,9 +879,8 @@ AcpiHwLowLevelRead (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read: %8.8X width %2d from %8.8X%8.8X (%s)\n",
|
||||
*Value, Width,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Reg->Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Reg->Address)),
|
||||
*Value, Width,
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Reg->Address)),
|
||||
AcpiUtGetRegionName (Reg->AddressSpaceId)));
|
||||
|
||||
return (Status);
|
||||
@ -928,9 +925,10 @@ AcpiHwLowLevelWrite (
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/*
|
||||
* Three address spaces supported:
|
||||
* Memory, Io, or PCI config.
|
||||
* Memory, IO, or PCI_Config.
|
||||
*/
|
||||
switch (Reg->AddressSpaceId)
|
||||
{
|
||||
@ -969,9 +967,8 @@ AcpiHwLowLevelWrite (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n",
|
||||
Value, Width,
|
||||
ACPI_HIDWORD (ACPI_GET_ADDRESS (Reg->Address)),
|
||||
ACPI_LODWORD (ACPI_GET_ADDRESS (Reg->Address)),
|
||||
Value, Width,
|
||||
ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Reg->Address)),
|
||||
AcpiUtGetRegionName (Reg->AddressSpaceId)));
|
||||
|
||||
return (Status);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nsaccess - Top-level functions for accessing ACPI namespace
|
||||
* $Revision: 173 $
|
||||
* $Revision: 175 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -406,8 +406,8 @@ AcpiNsLookup (
|
||||
PrefixNode = ScopeInfo->Scope.Node;
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (PrefixNode) != ACPI_DESC_TYPE_NAMED)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "[%p] Not a namespace node\n",
|
||||
PrefixNode));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p Not a namespace node [%s]\n",
|
||||
PrefixNode, AcpiUtGetDescriptorName (PrefixNode)));
|
||||
return_ACPI_STATUS (AE_AML_INTERNAL);
|
||||
}
|
||||
|
||||
@ -476,7 +476,7 @@ AcpiNsLookup (
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
|
||||
"Searching relative to prefix scope [%4.4s] (%p)\n",
|
||||
PrefixNode->Name.Ascii, PrefixNode));
|
||||
AcpiUtGetNodeName (PrefixNode), PrefixNode));
|
||||
|
||||
/*
|
||||
* Handle multiple Parent Prefixes (carat) by just getting
|
||||
@ -513,7 +513,7 @@ AcpiNsLookup (
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
|
||||
"Search scope is [%4.4s], path has %d carat(s)\n",
|
||||
ThisNode->Name.Ascii, NumCarats));
|
||||
AcpiUtGetNodeName (ThisNode), NumCarats));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nsalloc - Namespace allocation and deletion utilities
|
||||
* $Revision: 82 $
|
||||
* $Revision: 83 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -359,7 +359,7 @@ AcpiNsInstallNode (
|
||||
* alphabetic placement.
|
||||
*/
|
||||
PreviousChildNode = NULL;
|
||||
while (AcpiNsCompareNames (ChildNode->Name.Ascii, Node->Name.Ascii) < 0)
|
||||
while (AcpiNsCompareNames (AcpiUtGetNodeName (ChildNode), AcpiUtGetNodeName (Node)) < 0)
|
||||
{
|
||||
if (ChildNode->Flags & ANOBJ_END_OF_PEER_LIST)
|
||||
{
|
||||
@ -429,8 +429,9 @@ AcpiNsInstallNode (
|
||||
Node->Type = (UINT8) Type;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s (%s) added to %4.4s (%s) %p at %p\n",
|
||||
Node->Name.Ascii, AcpiUtGetTypeName (Node->Type),
|
||||
ParentNode->Name.Ascii, AcpiUtGetTypeName (ParentNode->Type), ParentNode, Node));
|
||||
AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type),
|
||||
AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type),
|
||||
ParentNode, Node));
|
||||
|
||||
/*
|
||||
* Increment the reference count(s) of all parents up to
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsdump - table dumping routines for debug
|
||||
* $Revision: 151 $
|
||||
* $Revision: 156 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -125,8 +125,8 @@
|
||||
#define _COMPONENT ACPI_NAMESPACE
|
||||
ACPI_MODULE_NAME ("nsdump")
|
||||
|
||||
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
|
||||
|
||||
#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -152,7 +152,7 @@ AcpiNsPrintPathname (
|
||||
return;
|
||||
}
|
||||
|
||||
/* Print the entire name */
|
||||
/* Print the entire name */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "["));
|
||||
|
||||
@ -289,7 +289,7 @@ AcpiNsDumpOneObject (
|
||||
* Now we can print out the pertinent information
|
||||
*/
|
||||
AcpiOsPrintf ("%4.4s %-12s %p ",
|
||||
ThisNode->Name.Ascii, AcpiUtGetTypeName (Type), ThisNode);
|
||||
AcpiUtGetNodeName (ThisNode), AcpiUtGetTypeName (Type), ThisNode);
|
||||
|
||||
DbgLevel = AcpiDbgLevel;
|
||||
AcpiDbgLevel = 0;
|
||||
@ -321,7 +321,7 @@ AcpiNsDumpOneObject (
|
||||
|
||||
case ACPI_TYPE_DEVICE:
|
||||
|
||||
AcpiOsPrintf ("Notify object: %p", ObjDesc);
|
||||
AcpiOsPrintf ("Notify Object: %p\n", ObjDesc);
|
||||
break;
|
||||
|
||||
|
||||
@ -337,8 +337,7 @@ AcpiNsDumpOneObject (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf ("= %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD (ObjDesc->Integer.Value));
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
@ -396,8 +395,7 @@ AcpiNsDumpOneObject (
|
||||
if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)
|
||||
{
|
||||
AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n",
|
||||
ACPI_HIDWORD (ObjDesc->Region.Address),
|
||||
ACPI_LODWORD (ObjDesc->Region.Address),
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
|
||||
ObjDesc->Region.Length);
|
||||
}
|
||||
else
|
||||
@ -420,7 +418,7 @@ AcpiNsDumpOneObject (
|
||||
ObjDesc->BufferField.BufferObj->Buffer.Node)
|
||||
{
|
||||
AcpiOsPrintf ("Buf [%4.4s]",
|
||||
ObjDesc->BufferField.BufferObj->Buffer.Node->Name.Ascii);
|
||||
AcpiUtGetNodeName (ObjDesc->BufferField.BufferObj->Buffer.Node));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -428,29 +426,29 @@ AcpiNsDumpOneObject (
|
||||
case ACPI_TYPE_LOCAL_REGION_FIELD:
|
||||
|
||||
AcpiOsPrintf ("Rgn [%4.4s]",
|
||||
ObjDesc->CommonField.RegionObj->Region.Node->Name.Ascii);
|
||||
AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_BANK_FIELD:
|
||||
|
||||
AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]",
|
||||
ObjDesc->CommonField.RegionObj->Region.Node->Name.Ascii,
|
||||
ObjDesc->BankField.BankObj->CommonField.Node->Name.Ascii);
|
||||
AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node),
|
||||
AcpiUtGetNodeName (ObjDesc->BankField.BankObj->CommonField.Node));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_INDEX_FIELD:
|
||||
|
||||
AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]",
|
||||
ObjDesc->IndexField.IndexObj->CommonField.Node->Name.Ascii,
|
||||
ObjDesc->IndexField.DataObj->CommonField.Node->Name.Ascii);
|
||||
AcpiUtGetNodeName (ObjDesc->IndexField.IndexObj->CommonField.Node),
|
||||
AcpiUtGetNodeName (ObjDesc->IndexField.DataObj->CommonField.Node));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_ALIAS:
|
||||
|
||||
AcpiOsPrintf ("Target %4.4s (%p)\n", ((ACPI_NAMESPACE_NODE *) ObjDesc)->Name.Ascii, ObjDesc);
|
||||
AcpiOsPrintf ("Target %4.4s (%p)\n", AcpiUtGetNodeName (ObjDesc), ObjDesc);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -468,7 +466,7 @@ AcpiNsDumpOneObject (
|
||||
case ACPI_TYPE_LOCAL_BANK_FIELD:
|
||||
case ACPI_TYPE_LOCAL_INDEX_FIELD:
|
||||
|
||||
AcpiOsPrintf (" Off %.2X Len %.2X Acc %.2hd\n",
|
||||
AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n",
|
||||
(ObjDesc->CommonField.BaseByteOffset * 8)
|
||||
+ ObjDesc->CommonField.StartFieldBitOffset,
|
||||
ObjDesc->CommonField.BitLength,
|
||||
@ -507,8 +505,8 @@ AcpiNsDumpOneObject (
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf (" N:%X%X\n", ACPI_HIDWORD(ObjDesc->Integer.Value),
|
||||
ACPI_LODWORD(ObjDesc->Integer.Value));
|
||||
AcpiOsPrintf (" I:%8.8X8.8%X\n",
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
@ -589,7 +587,8 @@ AcpiNsDumpOneObject (
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("(String or Buffer ptr - not an object descriptor)\n");
|
||||
AcpiOsPrintf ("(String or Buffer ptr - not an object descriptor) [%s]\n",
|
||||
AcpiUtGetDescriptorName (ObjDesc));
|
||||
BytesToDump = 16;
|
||||
break;
|
||||
}
|
||||
@ -687,7 +686,6 @@ AcpiNsDumpObjects (
|
||||
Info.OwnerId = OwnerId;
|
||||
Info.DisplayType = DisplayType;
|
||||
|
||||
|
||||
(void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth,
|
||||
ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject,
|
||||
(void *) &Info, NULL);
|
||||
@ -736,7 +734,6 @@ AcpiNsDumpTables (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n"));
|
||||
}
|
||||
|
||||
|
||||
AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth,
|
||||
ACPI_UINT32_MAX, SearchHandle);
|
||||
return_VOID;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsdump - table dumping routines for debug
|
||||
* $Revision: 8 $
|
||||
* $Revision: 9 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -170,7 +170,7 @@ AcpiNsDumpOneDevice (
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " HID: %s, ADR: %8.8X%8.8X, Status: %X\n",
|
||||
Info->HardwareId.Value,
|
||||
ACPI_HIDWORD (Info->Address), ACPI_LODWORD (Info->Address),
|
||||
ACPI_FORMAT_UINT64 (Info->Address),
|
||||
Info->CurrentStatus));
|
||||
ACPI_MEM_FREE (Info);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: nsinit - namespace initialization
|
||||
* $Revision: 55 $
|
||||
* $Revision: 57 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -220,10 +220,18 @@ AcpiNsInitializeDevices (
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Executing all Device _STA and_INI methods:"));
|
||||
|
||||
/* Walk namespace for all objects of type Device */
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
||||
ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, &Info, NULL);
|
||||
/* Walk namespace for all objects of type Device or Processor */
|
||||
|
||||
Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
|
||||
ACPI_UINT32_MAX, TRUE, AcpiNsInitOneDevice, &Info, NULL);
|
||||
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -373,7 +381,8 @@ AcpiNsInitOneObject (
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR, "\n"));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Could not execute arguments for [%4.4s] (%s), %s\n",
|
||||
Node->Name.Ascii, AcpiUtGetTypeName (Type), AcpiFormatException (Status)));
|
||||
AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Type),
|
||||
AcpiFormatException (Status)));
|
||||
}
|
||||
|
||||
/* Print a dot for each object unless we are going to print the entire pathname */
|
||||
@ -422,6 +431,21 @@ AcpiNsInitOneDevice (
|
||||
ACPI_FUNCTION_TRACE ("NsInitOneDevice");
|
||||
|
||||
|
||||
Node = AcpiNsMapHandleToNode (ObjHandle);
|
||||
if (!Node)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/*
|
||||
* We will run _STA/_INI on Devices and Processors only
|
||||
*/
|
||||
if ((Node->Type != ACPI_TYPE_DEVICE) &&
|
||||
(Node->Type != ACPI_TYPE_PROCESSOR))
|
||||
{
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
if ((AcpiDbgLevel <= ACPI_LV_ALL_EXCEPTIONS) && (!(AcpiDbgLevel & ACPI_LV_INFO)))
|
||||
{
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "."));
|
||||
@ -429,44 +453,33 @@ AcpiNsInitOneDevice (
|
||||
|
||||
Info->DeviceCount++;
|
||||
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Node = AcpiNsMapHandleToNode (ObjHandle);
|
||||
if (!Node)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Run _STA to determine if we can run _INI on the device.
|
||||
*/
|
||||
ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_METHOD, Node, "_STA"));
|
||||
Status = AcpiUtExecute_STA (Node, &Flags);
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* Ignore error and move on to next device */
|
||||
if (Node->Type == ACPI_TYPE_DEVICE)
|
||||
{
|
||||
/* Ignore error and move on to next device */
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
/* _STA is not required for Processor objects */
|
||||
}
|
||||
|
||||
Info->Num_STA++;
|
||||
|
||||
if (!(Flags & 0x01))
|
||||
else
|
||||
{
|
||||
/* don't look at children of a not present device */
|
||||
Info->Num_STA++;
|
||||
|
||||
return_ACPI_STATUS(AE_CTRL_DEPTH);
|
||||
if (!(Flags & 0x01))
|
||||
{
|
||||
/* Don't look at children of a not present device */
|
||||
|
||||
return_ACPI_STATUS(AE_CTRL_DEPTH);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsobject - Utilities for objects attached to namespace
|
||||
* table entries
|
||||
* $Revision: 87 $
|
||||
* $Revision: 89 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -182,7 +182,8 @@ AcpiNsAttachObject (
|
||||
{
|
||||
/* Not a name handle */
|
||||
|
||||
ACPI_REPORT_ERROR (("NsAttachObject: Invalid handle\n"));
|
||||
ACPI_REPORT_ERROR (("NsAttachObject: Invalid handle %p [%s]\n",
|
||||
Node, AcpiUtGetDescriptorName (Node)));
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
@ -233,7 +234,7 @@ AcpiNsAttachObject (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n",
|
||||
ObjDesc, Node, Node->Name.Ascii));
|
||||
ObjDesc, Node, AcpiUtGetNodeName (Node)));
|
||||
|
||||
/* Detach an existing attached object if present */
|
||||
|
||||
@ -322,7 +323,7 @@ AcpiNsDetachObject (
|
||||
Node->Type = ACPI_TYPE_ANY;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Node %p [%4.4s] Object %p\n",
|
||||
Node, Node->Name.Ascii, ObjDesc));
|
||||
Node, AcpiUtGetNodeName (Node), ObjDesc));
|
||||
|
||||
/* Remove one reference on the object (and all subobjects) */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: nssearch - Namespace search
|
||||
* $Revision: 97 $
|
||||
* $Revision: 99 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -172,7 +172,7 @@ AcpiNsSearchNode (
|
||||
ScopeName = AcpiNsGetExternalPathname (Node);
|
||||
if (ScopeName)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (%s)\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s (%p) For [%4.4s] (%s)\n",
|
||||
ScopeName, Node, (char *) &TargetName, AcpiUtGetTypeName (Type)));
|
||||
|
||||
ACPI_MEM_FREE (ScopeName);
|
||||
@ -195,9 +195,9 @@ AcpiNsSearchNode (
|
||||
* Found matching entry.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
|
||||
"Name %4.4s Type [%s] found in scope [%4.4s] %p\n",
|
||||
"Name [%4.4s] (%s) %p found in scope [%4.4s] %p\n",
|
||||
(char *) &TargetName, AcpiUtGetTypeName (NextNode->Type),
|
||||
NextNode->Name.Ascii, NextNode));
|
||||
NextNode, AcpiUtGetNodeName (Node), Node));
|
||||
|
||||
*ReturnNode = NextNode;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
@ -222,9 +222,9 @@ AcpiNsSearchNode (
|
||||
/* Searched entire namespace level, not found */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
|
||||
"Name %4.4s Type [%s] not found in search in scope [%4.4s] %p first child %p\n",
|
||||
"Name [%4.4s] (%s) not found in search in scope [%4.4s] %p first child %p\n",
|
||||
(char *) &TargetName, AcpiUtGetTypeName (Type),
|
||||
Node->Name.Ascii, Node, Node->Child));
|
||||
AcpiUtGetNodeName (Node), Node, Node->Child));
|
||||
|
||||
return_ACPI_STATUS (AE_NOT_FOUND);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
|
||||
* parents and siblings and Scope manipulation
|
||||
* $Revision: 129 $
|
||||
* $Revision: 131 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -256,6 +256,12 @@ AcpiNsPrintNodePathname (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
if (!Node)
|
||||
{
|
||||
AcpiOsPrintf ("[NULL NAME]");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Convert handle to a full pathname and print it (with supplied message) */
|
||||
|
||||
Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
|
||||
@ -577,12 +583,12 @@ AcpiNsBuildInternalName (
|
||||
|
||||
if (Info->FullyQualified)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "returning [%p] (abs) \"\\%s\"\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Returning [%p] (abs) \"\\%s\"\n",
|
||||
InternalName, InternalName));
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "returning [%p] (rel) \"%s\"\n",
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Returning [%p] (rel) \"%s\"\n",
|
||||
InternalName, InternalName));
|
||||
}
|
||||
|
||||
@ -1110,8 +1116,8 @@ AcpiNsFindParentName (
|
||||
if (ParentNode)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Parent of %p [%4.4s] is %p [%4.4s]\n",
|
||||
ChildNode, ChildNode->Name.Ascii,
|
||||
ParentNode, ParentNode->Name.Ascii));
|
||||
ChildNode, AcpiUtGetNodeName (ChildNode),
|
||||
ParentNode, AcpiUtGetNodeName (ParentNode)));
|
||||
|
||||
if (ParentNode->Name.Integer)
|
||||
{
|
||||
@ -1120,7 +1126,7 @@ AcpiNsFindParentName (
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "unable to find parent of %p (%4.4s)\n",
|
||||
ChildNode, ChildNode->Name.Ascii));
|
||||
ChildNode, AcpiUtGetNodeName (ChildNode)));
|
||||
}
|
||||
|
||||
return_VALUE (ACPI_UNKNOWN_NAME);
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: nsxfname - Public interfaces to the ACPI subsystem
|
||||
* ACPI Namespace oriented interfaces
|
||||
* $Revision: 97 $
|
||||
* $Revision: 98 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -286,7 +286,7 @@ AcpiGetName (
|
||||
|
||||
/* Just copy the ACPI name from the Node and zero terminate it */
|
||||
|
||||
ACPI_STRNCPY (Buffer->Pointer, Node->Name.Ascii,
|
||||
ACPI_STRNCPY (Buffer->Pointer, AcpiUtGetNodeName (Node),
|
||||
ACPI_NAME_SIZE);
|
||||
((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0;
|
||||
Status = AE_OK;
|
||||
@ -374,8 +374,8 @@ AcpiGetObjectInfo (
|
||||
{
|
||||
/*
|
||||
* Get extra info for ACPI Devices objects only:
|
||||
* Run the Device _HID, _UID, _CID, _STA, and _ADR methods.
|
||||
*
|
||||
* Run the Device _HID, _UID, _CID, _STA, and _ADR methods.
|
||||
*
|
||||
* Note: none of these methods are required, so they may or may
|
||||
* not be present for this device. The Info.Valid bitfield is used
|
||||
* to indicate which methods were found and ran successfully.
|
||||
@ -402,7 +402,7 @@ AcpiGetObjectInfo (
|
||||
Status = AcpiUtExecute_CID (Node, &CidList);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
Size += ((ACPI_SIZE) CidList->Count - 1) *
|
||||
Size += ((ACPI_SIZE) CidList->Count - 1) *
|
||||
sizeof (ACPI_COMPATIBLE_ID);
|
||||
Info.Valid |= ACPI_VALID_CID;
|
||||
}
|
||||
@ -417,7 +417,7 @@ AcpiGetObjectInfo (
|
||||
|
||||
/* Execute the Device._ADR method */
|
||||
|
||||
Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node,
|
||||
Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node,
|
||||
&Info.Address);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
|
@ -243,8 +243,9 @@ AcpiOsTableOverride (
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* TODO: Add table-getting code here */
|
||||
*NewTable = NULL;
|
||||
return (AE_OK);
|
||||
return (AE_NO_ACPI_TABLES);
|
||||
}
|
||||
|
||||
|
||||
@ -455,7 +456,7 @@ AcpiOsMapMemory (
|
||||
ACPI_SIZE length,
|
||||
void **there)
|
||||
{
|
||||
*there = (void *) (uintptr_t) where;
|
||||
*there = ACPI_TO_POINTER (where);
|
||||
|
||||
return AE_OK;
|
||||
}
|
||||
@ -792,6 +793,10 @@ AcpiOsStall (
|
||||
UINT32 microseconds)
|
||||
{
|
||||
|
||||
if (microseconds)
|
||||
{
|
||||
usleep (microseconds);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -815,7 +820,13 @@ AcpiOsSleep (
|
||||
UINT32 milliseconds)
|
||||
{
|
||||
|
||||
usleep (((seconds * 1000) + milliseconds) * 1000);
|
||||
sleep (seconds + (milliseconds / 1000)); /* Sleep for whole seconds */
|
||||
|
||||
/*
|
||||
* Arg to usleep() must be less than 1,000,000 (1 second)
|
||||
*/
|
||||
usleep ((milliseconds % 1000) * 1000); /* Sleep for remaining usecs */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psargs - Parse AML opcode arguments
|
||||
* $Revision: 73 $
|
||||
* $Revision: 74 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -579,7 +579,7 @@ ACPI_PARSE_OBJECT *
|
||||
AcpiPsGetNextField (
|
||||
ACPI_PARSE_STATE *ParserState)
|
||||
{
|
||||
UINT32 AmlOffset = ACPI_PTR_DIFF (ParserState->Aml,
|
||||
UINT32 AmlOffset = (UINT32) ACPI_PTR_DIFF (ParserState->Aml,
|
||||
ParserState->AmlStart);
|
||||
ACPI_PARSE_OBJECT *Field;
|
||||
UINT16 Opcode;
|
||||
@ -778,8 +778,8 @@ AcpiPsGetNextArg (
|
||||
|
||||
/* Fill in bytelist data */
|
||||
|
||||
Arg->Common.Value.Size = ACPI_PTR_DIFF (ParserState->PkgEnd,
|
||||
ParserState->Aml);
|
||||
Arg->Common.Value.Size = (UINT32) ACPI_PTR_DIFF (ParserState->PkgEnd,
|
||||
ParserState->Aml);
|
||||
Arg->Named.Data = ParserState->Aml;
|
||||
|
||||
/* Skip to End of byte data */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: psxface - Parser external interfaces
|
||||
* $Revision: 68 $
|
||||
* $Revision: 69 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -207,7 +207,8 @@ AcpiPsxExecute (
|
||||
Op = AcpiPsCreateScopeOp ();
|
||||
if (!Op)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup1;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -223,21 +224,26 @@ AcpiPsxExecute (
|
||||
NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup2;
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, MethodNode, ObjDesc->Method.AmlStart,
|
||||
ObjDesc->Method.AmlLength, NULL, NULL, 1);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
return_ACPI_STATUS (Status);
|
||||
goto Cleanup3;
|
||||
}
|
||||
|
||||
/* Parse the AML */
|
||||
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto Cleanup1; /* Walk state is already deleted */
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 2) Execute the method. Performs second pass parse simultaneously
|
||||
@ -251,7 +257,8 @@ AcpiPsxExecute (
|
||||
Op = AcpiPsCreateScopeOp ();
|
||||
if (!Op)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup1;
|
||||
}
|
||||
|
||||
/* Init new op with the method name and pointer back to the NS node */
|
||||
@ -264,23 +271,32 @@ AcpiPsxExecute (
|
||||
WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL);
|
||||
if (!WalkState)
|
||||
{
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
Status = AE_NO_MEMORY;
|
||||
goto Cleanup2;
|
||||
}
|
||||
|
||||
Status = AcpiDsInitAmlWalk (WalkState, Op, MethodNode, ObjDesc->Method.AmlStart,
|
||||
ObjDesc->Method.AmlLength, Params, ReturnObjDesc, 3);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
return_ACPI_STATUS (Status);
|
||||
goto Cleanup3;
|
||||
}
|
||||
|
||||
/*
|
||||
* The walk of the parse tree is where we actually execute the method
|
||||
*/
|
||||
Status = AcpiPsParseAml (WalkState);
|
||||
goto Cleanup2; /* Walk state already deleted */
|
||||
|
||||
|
||||
|
||||
Cleanup3:
|
||||
AcpiDsDeleteWalkState (WalkState);
|
||||
|
||||
Cleanup2:
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
Cleanup1:
|
||||
if (Params)
|
||||
{
|
||||
/* Take away the extra reference that we gave the parameters above */
|
||||
@ -293,6 +309,11 @@ AcpiPsxExecute (
|
||||
}
|
||||
}
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the method has returned an object, signal this to the caller with
|
||||
* a control exception code
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsaddr - Address resource descriptors (16/32/64)
|
||||
* $Revision: 32 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -168,9 +168,12 @@ AcpiRsAddress16Resource (
|
||||
Buffer += 1;
|
||||
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
|
||||
|
||||
/* Check for the minimum length. */
|
||||
/* Validate minimum descriptor length */
|
||||
|
||||
if (Temp16 < 13)
|
||||
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
|
||||
}
|
||||
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
OutputStruct->Id = ACPI_RSTYPE_ADDRESS16;
|
||||
@ -279,13 +282,14 @@ AcpiRsAddress16Resource (
|
||||
/*
|
||||
* This will leave us pointing to the Resource Source Index
|
||||
* If it is present, then save it off and calculate the
|
||||
* pointer to where the null terminated string goes.
|
||||
* pointer to where the null terminated string goes:
|
||||
* Each Interrupt takes 32-bits + the 5 bytes of the
|
||||
* stream that are default.
|
||||
*
|
||||
* Note that some buggy resources have a length that indicates the
|
||||
* Index byte is present even though it isn't (since there is no
|
||||
* following Resource String.) We add one to catch these.
|
||||
* Note: Some resource descriptors will have an additional null, so
|
||||
* we add 1 to the length.
|
||||
*/
|
||||
if (*BytesConsumed > 16 + 1)
|
||||
if (*BytesConsumed > (16 + 1))
|
||||
{
|
||||
/* Dereference the Index */
|
||||
|
||||
@ -492,7 +496,7 @@ AcpiRsAddress16Stream (
|
||||
|
||||
/*
|
||||
* Buffer needs to be set to the length of the sting + one for the
|
||||
* terminating null
|
||||
* terminating null
|
||||
*/
|
||||
Buffer += (ACPI_SIZE)(ACPI_STRLEN (LinkedList->Data.Address16.ResourceSource.StringPtr) + 1);
|
||||
}
|
||||
@ -562,11 +566,14 @@ AcpiRsAddress32Resource (
|
||||
Buffer += 1;
|
||||
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
|
||||
|
||||
/* Check for the minimum length. */
|
||||
if (Temp16 < 23)
|
||||
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
/* Validate minimum descriptor length */
|
||||
|
||||
if (Temp16 < 23)
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
|
||||
}
|
||||
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
OutputStruct->Id = ACPI_RSTYPE_ADDRESS32;
|
||||
|
||||
/*
|
||||
@ -677,13 +684,12 @@ AcpiRsAddress32Resource (
|
||||
/*
|
||||
* This will leave us pointing to the Resource Source Index
|
||||
* If it is present, then save it off and calculate the
|
||||
* pointer to where the null terminated string goes.
|
||||
* pointer to where the null terminated string goes:
|
||||
*
|
||||
* Note that some buggy resources have a length that indicates the
|
||||
* Index byte is present even though it isn't (since there is no
|
||||
* following Resource String.) We add one to catch these.
|
||||
* Note: Some resource descriptors will have an additional null, so
|
||||
* we add 1 to the length.
|
||||
*/
|
||||
if (*BytesConsumed > 26 + 1)
|
||||
if (*BytesConsumed > (26 + 1))
|
||||
{
|
||||
/* Dereference the Index */
|
||||
|
||||
@ -722,8 +728,8 @@ AcpiRsAddress32Resource (
|
||||
|
||||
/*
|
||||
* In order for the StructSize to fall on a 32-bit boundary,
|
||||
* calculate the length of the string and expand the
|
||||
* StructSize to the next 32-bit boundary.
|
||||
* calculate the length of the string and expand the
|
||||
* StructSize to the next 32-bit boundary.
|
||||
*/
|
||||
Temp8 = (UINT8) (Index + 1);
|
||||
StructSize += ACPI_ROUND_UP_TO_32BITS (Temp8);
|
||||
@ -958,11 +964,14 @@ AcpiRsAddress64Resource (
|
||||
Buffer += 1;
|
||||
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
|
||||
|
||||
/* Check for the minimum length. */
|
||||
if (Temp16 < 43)
|
||||
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
/* Validate minimum descriptor length */
|
||||
|
||||
if (Temp16 < 43)
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
|
||||
}
|
||||
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
OutputStruct->Id = ACPI_RSTYPE_ADDRESS64;
|
||||
|
||||
/*
|
||||
@ -1074,13 +1083,14 @@ AcpiRsAddress64Resource (
|
||||
/*
|
||||
* This will leave us pointing to the Resource Source Index
|
||||
* If it is present, then save it off and calculate the
|
||||
* pointer to where the null terminated string goes.
|
||||
* pointer to where the null terminated string goes:
|
||||
* Each Interrupt takes 32-bits + the 5 bytes of the
|
||||
* stream that are default.
|
||||
*
|
||||
* Note that some buggy resources have a length that indicates the
|
||||
* Index byte is present even though it isn't (since there is no
|
||||
* following Resource String.) We add one to catch these.
|
||||
* Note: Some resource descriptors will have an additional null, so
|
||||
* we add 1 to the length.
|
||||
*/
|
||||
if (*BytesConsumed > 46 + 1)
|
||||
if (*BytesConsumed > (46 + 1))
|
||||
{
|
||||
/* Dereference the Index */
|
||||
|
||||
@ -1115,7 +1125,6 @@ AcpiRsAddress64Resource (
|
||||
* Add the terminating null
|
||||
*/
|
||||
*TempPtr = 0x00;
|
||||
|
||||
OutputStruct->Data.Address64.ResourceSource.StringLength = Index + 1;
|
||||
|
||||
/*
|
||||
@ -1188,7 +1197,6 @@ AcpiRsAddress64Stream (
|
||||
/*
|
||||
* Set a pointer to the Length field - to be filled in later
|
||||
*/
|
||||
|
||||
LengthField = ACPI_CAST_PTR (UINT16, Buffer);
|
||||
Buffer += 2;
|
||||
|
||||
@ -1288,7 +1296,7 @@ AcpiRsAddress64Stream (
|
||||
|
||||
/*
|
||||
* Buffer needs to be set to the length of the sting + one for the
|
||||
* terminating null
|
||||
* terminating null
|
||||
*/
|
||||
Buffer += (ACPI_SIZE)(ACPI_STRLEN (LinkedList->Data.Address64.ResourceSource.StringPtr) + 1);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rscalc - Calculate stream and list lengths
|
||||
* $Revision: 48 $
|
||||
* $Revision: 49 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -796,7 +796,7 @@ AcpiRsGetListLength (
|
||||
default:
|
||||
/*
|
||||
* If we get here, everything is out of sync,
|
||||
* so exit with an error
|
||||
* exit with an error
|
||||
*/
|
||||
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
|
||||
}
|
||||
@ -804,7 +804,7 @@ AcpiRsGetListLength (
|
||||
/*
|
||||
* Update the return value and counter
|
||||
*/
|
||||
BufferSize += ACPI_ALIGN_RESOURCE_SIZE(StructureSize);
|
||||
BufferSize += (UINT32) ACPI_ALIGN_RESOURCE_SIZE (StructureSize);
|
||||
BytesParsed += BytesConsumed;
|
||||
|
||||
/*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsdump - Functions to display the resource structures.
|
||||
* $Revision: 36 $
|
||||
* $Revision: 37 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -992,24 +992,19 @@ AcpiRsDumpAddress64 (
|
||||
"" : "not ");
|
||||
|
||||
AcpiOsPrintf (" Granularity: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (Address64Data->Granularity),
|
||||
ACPI_LODWORD (Address64Data->Granularity));
|
||||
ACPI_FORMAT_UINT64 (Address64Data->Granularity));
|
||||
|
||||
AcpiOsPrintf (" Address range min: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (Address64Data->MinAddressRange),
|
||||
ACPI_HIDWORD (Address64Data->MinAddressRange));
|
||||
ACPI_FORMAT_UINT64 (Address64Data->MinAddressRange));
|
||||
|
||||
AcpiOsPrintf (" Address range max: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (Address64Data->MaxAddressRange),
|
||||
ACPI_HIDWORD (Address64Data->MaxAddressRange));
|
||||
ACPI_FORMAT_UINT64 (Address64Data->MaxAddressRange));
|
||||
|
||||
AcpiOsPrintf (" Address translation offset: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (Address64Data->AddressTranslationOffset),
|
||||
ACPI_HIDWORD (Address64Data->AddressTranslationOffset));
|
||||
ACPI_FORMAT_UINT64 (Address64Data->AddressTranslationOffset));
|
||||
|
||||
AcpiOsPrintf (" Address Length: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (Address64Data->AddressLength),
|
||||
ACPI_HIDWORD (Address64Data->AddressLength));
|
||||
ACPI_FORMAT_UINT64 (Address64Data->AddressLength));
|
||||
|
||||
if(0xFF != Address64Data->ResourceSource.Index)
|
||||
{
|
||||
@ -1227,8 +1222,7 @@ AcpiRsDumpIrqList (
|
||||
AcpiOsPrintf ("PCI IRQ Routing Table structure %X.\n", Count++);
|
||||
|
||||
AcpiOsPrintf (" Address: %8.8X%8.8X\n",
|
||||
ACPI_HIDWORD (PrtElement->Address),
|
||||
ACPI_LODWORD (PrtElement->Address));
|
||||
ACPI_FORMAT_UINT64 (PrtElement->Address));
|
||||
|
||||
AcpiOsPrintf (" Pin: %X\n", PrtElement->Pin);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rsirq - IRQ resource descriptors
|
||||
* $Revision: 34 $
|
||||
* $Revision: 37 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -210,30 +210,29 @@ AcpiRsIrqResource (
|
||||
Temp8 = *Buffer;
|
||||
|
||||
/*
|
||||
* Check for HE, LL or HL
|
||||
* Check for HE, LL interrupts
|
||||
*/
|
||||
if (Temp8 & 0x01)
|
||||
switch (Temp8 & 0x09)
|
||||
{
|
||||
case 0x01: /* HE */
|
||||
OutputStruct->Data.Irq.EdgeLevel = ACPI_EDGE_SENSITIVE;
|
||||
OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_HIGH;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Temp8 & 0x8)
|
||||
{
|
||||
OutputStruct->Data.Irq.EdgeLevel = ACPI_LEVEL_SENSITIVE;
|
||||
OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_LOW;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Only _LL and _HE polarity/trigger interrupts
|
||||
* are allowed (ACPI spec v1.0b ection 6.4.2.1),
|
||||
* so an error will occur if we reach this point
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid interrupt polarity/trigger in resource list\n"));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x08: /* LL */
|
||||
OutputStruct->Data.Irq.EdgeLevel = ACPI_LEVEL_SENSITIVE;
|
||||
OutputStruct->Data.Irq.ActiveHighLow = ACPI_ACTIVE_LOW;
|
||||
break;
|
||||
|
||||
default:
|
||||
/*
|
||||
* Only _LL and _HE polarity/trigger interrupts
|
||||
* are allowed (ACPI spec, section "IRQ Format")
|
||||
* so 0x00 and 0x09 are illegal.
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Invalid interrupt polarity/trigger in resource list, %X\n", Temp8));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -408,11 +407,14 @@ AcpiRsExtendedIrqResource (
|
||||
Buffer += 1;
|
||||
ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
|
||||
|
||||
/* Check for the minimum length. */
|
||||
if (Temp16 < 6)
|
||||
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
/* Validate minimum descriptor length */
|
||||
|
||||
if (Temp16 < 6)
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
|
||||
}
|
||||
|
||||
*BytesConsumed = Temp16 + 3;
|
||||
OutputStruct->Id = ACPI_RSTYPE_EXT_IRQ;
|
||||
|
||||
/*
|
||||
@ -450,10 +452,11 @@ AcpiRsExtendedIrqResource (
|
||||
Buffer += 1;
|
||||
Temp8 = *Buffer;
|
||||
|
||||
/* Minimum number of IRQs is one. */
|
||||
if (Temp8 < 1) {
|
||||
*BytesConsumed = 0;
|
||||
return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
|
||||
/* Must have at least one IRQ */
|
||||
|
||||
if (Temp8 < 1)
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
|
||||
}
|
||||
|
||||
OutputStruct->Data.ExtendedIrq.NumberOfInterrupts = Temp8;
|
||||
@ -488,10 +491,12 @@ AcpiRsExtendedIrqResource (
|
||||
* pointer to where the null terminated string goes:
|
||||
* Each Interrupt takes 32-bits + the 5 bytes of the
|
||||
* stream that are default.
|
||||
*
|
||||
* Note: Some resource descriptors will have an additional null, so
|
||||
* we add 1 to the length.
|
||||
*/
|
||||
if (*BytesConsumed >
|
||||
((ACPI_SIZE) OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4)
|
||||
+ 5 + 1)
|
||||
((ACPI_SIZE) OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4) + (5 + 1))
|
||||
{
|
||||
/* Dereference the Index */
|
||||
|
||||
@ -506,7 +511,7 @@ AcpiRsExtendedIrqResource (
|
||||
* Point the String pointer to the end of this structure.
|
||||
*/
|
||||
OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr =
|
||||
(char *)(OutputStruct + StructSize);
|
||||
(char *)((char *) OutputStruct + StructSize);
|
||||
|
||||
TempPtr = (UINT8 *) OutputStruct->Data.ExtendedIrq.ResourceSource.StringPtr;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: rslist - Linked list utilities
|
||||
* $Revision: 32 $
|
||||
* $Revision: 33 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -390,8 +390,8 @@ AcpiRsByteStreamToList (
|
||||
* Set the Buffer to the next structure
|
||||
*/
|
||||
Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer);
|
||||
Resource->Length = ACPI_ALIGN_RESOURCE_SIZE(Resource->Length);
|
||||
Buffer += ACPI_ALIGN_RESOURCE_SIZE(StructureSize);
|
||||
Resource->Length = (UINT32) ACPI_ALIGN_RESOURCE_SIZE (Resource->Length);
|
||||
Buffer += ACPI_ALIGN_RESOURCE_SIZE (StructureSize);
|
||||
|
||||
} /* end while */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbconvrt - ACPI Table conversion utilities
|
||||
* $Revision: 52 $
|
||||
* $Revision: 54 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -149,14 +149,11 @@ AcpiTbGetTableCount (
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
|
||||
|
||||
#if ACPI_MACHINE_WIDTH != 64
|
||||
|
||||
if (RSDP->Revision < 2)
|
||||
{
|
||||
PointerSize = sizeof (UINT32);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
PointerSize = sizeof (UINT64);
|
||||
}
|
||||
@ -211,7 +208,7 @@ AcpiTbConvertToXsdt (
|
||||
/* Copy the header and set the length */
|
||||
|
||||
ACPI_MEMCPY (NewTable, TableInfo->Pointer, sizeof (ACPI_TABLE_HEADER));
|
||||
NewTable->Header.Length = (UINT32) TableSize;
|
||||
NewTable->Length = (UINT32) TableSize;
|
||||
|
||||
/* Copy the table pointers */
|
||||
|
||||
@ -526,20 +523,20 @@ AcpiTbConvertTableFadt (void)
|
||||
* FADT length and version validation. The table must be at least as
|
||||
* long as the version 1.0 FADT
|
||||
*/
|
||||
if (AcpiGbl_FADT->Header.Length < sizeof (FADT_DESCRIPTOR_REV1))
|
||||
if (AcpiGbl_FADT->Length < sizeof (FADT_DESCRIPTOR_REV1))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Invalid FADT table length: 0x%X\n", AcpiGbl_FADT->Header.Length));
|
||||
ACPI_REPORT_ERROR (("Invalid FADT table length: 0x%X\n", AcpiGbl_FADT->Length));
|
||||
return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH);
|
||||
}
|
||||
|
||||
if (AcpiGbl_FADT->Header.Revision >= FADT2_REVISION_ID)
|
||||
if (AcpiGbl_FADT->Revision >= FADT2_REVISION_ID)
|
||||
{
|
||||
if (AcpiGbl_FADT->Header.Length < sizeof (FADT_DESCRIPTOR_REV2))
|
||||
if (AcpiGbl_FADT->Length < sizeof (FADT_DESCRIPTOR_REV2))
|
||||
{
|
||||
/* Length is too short to be a V2.0 table */
|
||||
|
||||
ACPI_REPORT_WARNING (("Inconsistent FADT length (0x%X) and revision (0x%X), using FADT V1.0 portion of table\n",
|
||||
AcpiGbl_FADT->Header.Length, AcpiGbl_FADT->Header.Revision));
|
||||
AcpiGbl_FADT->Length, AcpiGbl_FADT->Revision));
|
||||
|
||||
AcpiTbConvertFadt1 (LocalFadt, (void *) AcpiGbl_FADT);
|
||||
}
|
||||
@ -561,7 +558,7 @@ AcpiTbConvertTableFadt (void)
|
||||
* Global FADT pointer will point to the new common V2.0 FADT
|
||||
*/
|
||||
AcpiGbl_FADT = LocalFadt;
|
||||
AcpiGbl_FADT->Header.Length = sizeof (FADT_DESCRIPTOR);
|
||||
AcpiGbl_FADT->Length = sizeof (FADT_DESCRIPTOR);
|
||||
|
||||
/* Free the original table */
|
||||
|
||||
@ -578,8 +575,8 @@ AcpiTbConvertTableFadt (void)
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES,
|
||||
"Hex dump of common internal FADT, size %d (%X)\n",
|
||||
AcpiGbl_FADT->Header.Length, AcpiGbl_FADT->Header.Length));
|
||||
ACPI_DUMP_BUFFER ((UINT8 *) (AcpiGbl_FADT), AcpiGbl_FADT->Header.Length);
|
||||
AcpiGbl_FADT->Length, AcpiGbl_FADT->Length));
|
||||
ACPI_DUMP_BUFFER ((UINT8 *) (AcpiGbl_FADT), AcpiGbl_FADT->Length);
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbgetall - Get all required ACPI tables
|
||||
* $Revision: 7 $
|
||||
* $Revision: 8 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -324,8 +324,7 @@ AcpiTbGetRequiredTables (
|
||||
{
|
||||
ACPI_REPORT_WARNING (("%s, while getting table at %8.8X%8.8X\n",
|
||||
AcpiFormatException (Status),
|
||||
ACPI_HIDWORD (Address.Pointer.Value),
|
||||
ACPI_LODWORD (Address.Pointer.Value)));
|
||||
ACPI_FORMAT_UINT64 (Address.Pointer.Value)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbinstal - ACPI table installation and removal
|
||||
* $Revision: 69 $
|
||||
* $Revision: 72 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -358,23 +358,45 @@ AcpiTbInitTableDescriptor (
|
||||
{
|
||||
return_ACPI_STATUS (AE_ALREADY_EXISTS);
|
||||
}
|
||||
|
||||
TableDesc->Next = ListHead->Next;
|
||||
ListHead->Next = TableDesc;
|
||||
|
||||
if (TableDesc->Next)
|
||||
{
|
||||
TableDesc->Next->Prev = TableDesc;
|
||||
}
|
||||
|
||||
ListHead->Count++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Link the new table in to the list of tables of this type.
|
||||
* Just insert at the start of the list, order unimportant.
|
||||
*
|
||||
* TableDesc->Prev is already NULL from calloc()
|
||||
*/
|
||||
TableDesc->Next = ListHead->Next;
|
||||
ListHead->Next = TableDesc;
|
||||
|
||||
if (TableDesc->Next)
|
||||
else
|
||||
{
|
||||
TableDesc->Next->Prev = TableDesc;
|
||||
}
|
||||
/*
|
||||
* Link the new table in to the list of tables of this type.
|
||||
* Insert at the end of the list, order IS IMPORTANT.
|
||||
*
|
||||
* TableDesc->Prev & Next are already NULL from calloc()
|
||||
*/
|
||||
ListHead->Count++;
|
||||
|
||||
ListHead->Count++;
|
||||
if (!ListHead->Next)
|
||||
{
|
||||
ListHead->Next = TableDesc;
|
||||
}
|
||||
else
|
||||
{
|
||||
TableDesc->Next = ListHead->Next;
|
||||
|
||||
while (TableDesc->Next->Next)
|
||||
{
|
||||
TableDesc->Next = TableDesc->Next->Next;
|
||||
}
|
||||
|
||||
TableDesc->Next->Next = TableDesc;
|
||||
TableDesc->Prev = TableDesc->Next;
|
||||
TableDesc->Next = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Finish initialization of the table descriptor */
|
||||
|
||||
@ -421,7 +443,7 @@ AcpiTbInitTableDescriptor (
|
||||
void
|
||||
AcpiTbDeleteAllTables (void)
|
||||
{
|
||||
ACPI_TABLE_TYPE Type;
|
||||
ACPI_TABLE_TYPE Type;
|
||||
|
||||
|
||||
/*
|
||||
@ -450,7 +472,7 @@ AcpiTbDeleteAllTables (void)
|
||||
|
||||
void
|
||||
AcpiTbDeleteTablesByType (
|
||||
ACPI_TABLE_TYPE Type)
|
||||
ACPI_TABLE_TYPE Type)
|
||||
{
|
||||
ACPI_TABLE_DESC *TableDesc;
|
||||
UINT32 Count;
|
||||
@ -500,15 +522,16 @@ AcpiTbDeleteTablesByType (
|
||||
break;
|
||||
}
|
||||
|
||||
/* Free the table */
|
||||
/* Get the head of the list */
|
||||
|
||||
/*
|
||||
* Free the table
|
||||
* 1) Get the head of the list
|
||||
*/
|
||||
TableDesc = AcpiGbl_TableLists[Type].Next;
|
||||
Count = AcpiGbl_TableLists[Type].Count;
|
||||
|
||||
/*
|
||||
* Walk the entire list, deleting both the allocated tables
|
||||
* and the table descriptors
|
||||
* 2) Walk the entire list, deleting both the allocated tables
|
||||
* and the table descriptors
|
||||
*/
|
||||
for (i = 0; i < Count; i++)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbrsdt - ACPI RSDT table utilities
|
||||
* $Revision: 7 $
|
||||
* $Revision: 9 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -160,7 +160,7 @@ AcpiTbVerifyRsdp (
|
||||
* Obtain access to the RSDP structure
|
||||
*/
|
||||
Status = AcpiOsMapMemory (Address->Pointer.Physical, sizeof (RSDP_DESCRIPTOR),
|
||||
(void **) &Rsdp);
|
||||
(void *) &Rsdp);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -366,8 +366,7 @@ AcpiTbGetTableRsdt (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"RSDP located at %p, points to RSDT physical=%8.8X%8.8X \n",
|
||||
AcpiGbl_RSDP,
|
||||
ACPI_HIDWORD (Address.Pointer.Value),
|
||||
ACPI_LODWORD (Address.Pointer.Value)));
|
||||
ACPI_FORMAT_UINT64 (Address.Pointer.Value)));
|
||||
|
||||
/* Check the RSDT or XSDT signature */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Module Name: tbxface - Public interfaces to the ACPI subsystem
|
||||
* ACPI table oriented interfaces
|
||||
* $Revision: 62 $
|
||||
* $Revision: 63 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -336,7 +336,7 @@ AcpiUnloadTable (
|
||||
/* Find all tables of the requested type */
|
||||
|
||||
TableDesc = AcpiGbl_TableLists[TableType].Next;
|
||||
while (TableDesc);
|
||||
while (TableDesc)
|
||||
{
|
||||
/*
|
||||
* Delete all namespace entries owned by this table. Note that these
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
|
||||
* $Revision: 68 $
|
||||
* $Revision: 70 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -260,7 +260,7 @@ AcpiGetFirmwareTable (
|
||||
if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING)
|
||||
{
|
||||
Status = AcpiOsMapMemory (RsdpAddress.Pointer.Physical, sizeof (RSDP_DESCRIPTOR),
|
||||
(void **) &AcpiGbl_RSDP);
|
||||
(void *) &AcpiGbl_RSDP);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -296,8 +296,7 @@ AcpiGetFirmwareTable (
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"RSDP located at %p, RSDT physical=%8.8X%8.8X \n",
|
||||
AcpiGbl_RSDP,
|
||||
ACPI_HIDWORD (Address.Pointer.Value),
|
||||
ACPI_LODWORD (Address.Pointer.Value)));
|
||||
ACPI_FORMAT_UINT64 (Address.Pointer.Value)));
|
||||
|
||||
/* Insert ProcessorMode flags */
|
||||
|
||||
@ -521,7 +520,7 @@ AcpiTbFindRsdp (
|
||||
* 1) Search EBDA (low memory) paragraphs
|
||||
*/
|
||||
Status = AcpiOsMapMemory ((UINT64) ACPI_LO_RSDP_WINDOW_BASE, ACPI_LO_RSDP_WINDOW_SIZE,
|
||||
(void **) &TablePtr);
|
||||
(void *) &TablePtr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
|
||||
@ -547,7 +546,7 @@ AcpiTbFindRsdp (
|
||||
* 2) Search upper memory: 16-byte boundaries in E0000h-F0000h
|
||||
*/
|
||||
Status = AcpiOsMapMemory ((UINT64) ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE,
|
||||
(void **) &TablePtr);
|
||||
(void *) &TablePtr);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utalloc - local cache and memory allocation routines
|
||||
* $Revision: 131 $
|
||||
* $Revision: 134 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -908,7 +908,7 @@ AcpiUtRemoveAllocation (
|
||||
|
||||
ACPI_MEMSET (&Allocation->UserSpace, 0xEA, Allocation->Size);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size %X\n", Allocation->Size));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size 0%X\n", Allocation->Size));
|
||||
|
||||
Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY);
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -1019,72 +1019,31 @@ AcpiUtDumpAllocations (
|
||||
Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace);
|
||||
if (Descriptor->DescriptorId != ACPI_DESC_TYPE_CACHED)
|
||||
{
|
||||
AcpiOsPrintf ("%p Len %04X %9.9s-%d ",
|
||||
AcpiOsPrintf ("%p Len %04X %9.9s-%d [%s] ",
|
||||
Descriptor, Element->Size, Element->Module,
|
||||
Element->Line);
|
||||
Element->Line, AcpiUtGetDescriptorName (Descriptor));
|
||||
|
||||
/* Most of the elements will be internal objects. */
|
||||
/* Most of the elements will be Operand objects. */
|
||||
|
||||
switch (ACPI_GET_DESCRIPTOR_TYPE (Descriptor))
|
||||
{
|
||||
case ACPI_DESC_TYPE_OPERAND:
|
||||
AcpiOsPrintf ("ObjType %12.12s R%hd",
|
||||
AcpiOsPrintf ("%12.12s R%hd",
|
||||
AcpiUtGetTypeName (Descriptor->Object.Common.Type),
|
||||
Descriptor->Object.Common.ReferenceCount);
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_PARSER:
|
||||
AcpiOsPrintf ("ParseObj AmlOpcode %04hX",
|
||||
AcpiOsPrintf ("AmlOpcode %04hX",
|
||||
Descriptor->Op.Asl.AmlOpcode);
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_NAMED:
|
||||
AcpiOsPrintf ("Node %4.4s",
|
||||
Descriptor->Node.Name.Ascii);
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE:
|
||||
AcpiOsPrintf ("Untyped StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_UPDATE:
|
||||
AcpiOsPrintf ("UPDATE StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_PACKAGE:
|
||||
AcpiOsPrintf ("PACKAGE StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_CONTROL:
|
||||
AcpiOsPrintf ("CONTROL StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_RPSCOPE:
|
||||
AcpiOsPrintf ("ROOT-PARSE-SCOPE StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_PSCOPE:
|
||||
AcpiOsPrintf ("PARSE-SCOPE StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_WSCOPE:
|
||||
AcpiOsPrintf ("WALK-SCOPE StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_RESULT:
|
||||
AcpiOsPrintf ("RESULT StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_NOTIFY:
|
||||
AcpiOsPrintf ("NOTIFY StateObj");
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_STATE_THREAD:
|
||||
AcpiOsPrintf ("THREAD StateObj");
|
||||
AcpiOsPrintf ("%4.4s",
|
||||
AcpiUtGetNodeName (&Descriptor->Node));
|
||||
break;
|
||||
|
||||
default:
|
||||
/* All types should appear above */
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utdebug - Debug print routines
|
||||
* $Revision: 109 $
|
||||
* $Revision: 110 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -530,7 +530,7 @@ AcpiUtValueExit (
|
||||
|
||||
AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, DbgInfo,
|
||||
"%s %8.8X%8.8X\n", AcpiGbl_FnExitStr,
|
||||
ACPI_HIDWORD (Value), ACPI_LODWORD (Value));
|
||||
ACPI_FORMAT_UINT64 (Value));
|
||||
|
||||
AcpiGbl_NestingLevel--;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Module Name: utdelete - object deletion and reference count utilities
|
||||
* $Revision: 97 $
|
||||
* $Revision: 98 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -219,7 +219,7 @@ AcpiUtDeleteInternalObj (
|
||||
|
||||
/* Walk the handler list for this device */
|
||||
|
||||
HandlerDesc = Object->Device.AddressSpace;
|
||||
HandlerDesc = Object->Device.Handler;
|
||||
while (HandlerDesc)
|
||||
{
|
||||
NextDesc = HandlerDesc->AddressSpace.Next;
|
||||
@ -275,7 +275,7 @@ AcpiUtDeleteInternalObj (
|
||||
* default handlers -- and therefore, we created the context object
|
||||
* locally, it was not created by an external caller.
|
||||
*/
|
||||
HandlerDesc = Object->Region.AddressSpace;
|
||||
HandlerDesc = Object->Region.Handler;
|
||||
if (HandlerDesc)
|
||||
{
|
||||
if (HandlerDesc->AddressSpace.Hflags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)
|
||||
@ -510,7 +510,6 @@ AcpiUtUpdateObjectReference (
|
||||
UINT32 i;
|
||||
ACPI_GENERIC_STATE *StateList = NULL;
|
||||
ACPI_GENERIC_STATE *State;
|
||||
ACPI_OPERAND_OBJECT *tmp;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("UtUpdateObjectReference", Object);
|
||||
@ -547,15 +546,8 @@ AcpiUtUpdateObjectReference (
|
||||
{
|
||||
case ACPI_TYPE_DEVICE:
|
||||
|
||||
tmp = Object->Device.SystemNotify;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->Device.SystemNotify = NULL;
|
||||
AcpiUtUpdateRefCount (tmp, Action);
|
||||
|
||||
tmp = Object->Device.DeviceNotify;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->Device.DeviceNotify = NULL;
|
||||
AcpiUtUpdateRefCount (tmp, Action);
|
||||
AcpiUtUpdateRefCount (Object->Device.SystemNotify, Action);
|
||||
AcpiUtUpdateRefCount (Object->Device.DeviceNotify, Action);
|
||||
break;
|
||||
|
||||
|
||||
@ -578,10 +570,6 @@ AcpiUtUpdateObjectReference (
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->Package.Elements[i];
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->Package.Elements[i] = NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -594,10 +582,6 @@ AcpiUtUpdateObjectReference (
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->BufferField.BufferObj;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->BufferField.BufferObj = NULL;
|
||||
break;
|
||||
|
||||
|
||||
@ -609,10 +593,6 @@ AcpiUtUpdateObjectReference (
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->Field.RegionObj;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->Field.RegionObj = NULL;
|
||||
break;
|
||||
|
||||
|
||||
@ -625,20 +605,12 @@ AcpiUtUpdateObjectReference (
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->BankField.BankObj;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->BankField.BankObj = NULL;
|
||||
|
||||
Status = AcpiUtCreateUpdateStateAndPush (
|
||||
Object->BankField.RegionObj, Action, &StateList);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->BankField.RegionObj;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->BankField.RegionObj = NULL;
|
||||
break;
|
||||
|
||||
|
||||
@ -651,20 +623,12 @@ AcpiUtUpdateObjectReference (
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->IndexField.IndexObj;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->IndexField.IndexObj = NULL;
|
||||
|
||||
Status = AcpiUtCreateUpdateStateAndPush (
|
||||
Object->IndexField.DataObj, Action, &StateList);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
tmp = Object->IndexField.DataObj;
|
||||
if (tmp && (tmp->Common.ReferenceCount <= 1) && Action == REF_DECREMENT)
|
||||
Object->IndexField.DataObj = NULL;
|
||||
break;
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: uteval - Object evaluation
|
||||
* $Revision: 48 $
|
||||
* $Revision: 49 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -167,7 +167,7 @@ AcpiUtEvaluateObject (
|
||||
if (Status == AE_NOT_FOUND)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s.%s] was not found\n",
|
||||
PrefixNode->Name.Ascii, Path));
|
||||
AcpiUtGetNodeName (PrefixNode), Path));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -646,7 +646,7 @@ AcpiUtExecute_STA (
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
"_STA on %4.4s was not found, assuming device is present\n",
|
||||
DeviceNode->Name.Ascii));
|
||||
AcpiUtGetNodeName (DeviceNode)));
|
||||
|
||||
*Flags = 0x0F;
|
||||
Status = AE_OK;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: utobject - ACPI object create/delete/size/cache routines
|
||||
* $Revision: 83 $
|
||||
* $Revision: 84 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -305,29 +305,10 @@ AcpiUtValidInternalObject (
|
||||
|
||||
return (TRUE);
|
||||
|
||||
case ACPI_DESC_TYPE_NAMED:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"**** Obj %p is a named obj, not ACPI obj\n", Object));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_PARSER:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"**** Obj %p is a parser obj, not ACPI obj\n", Object));
|
||||
break;
|
||||
|
||||
case ACPI_DESC_TYPE_CACHED:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"**** Obj %p has already been released to internal cache\n", Object));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"**** Obj %p has unknown descriptor type %X\n", Object,
|
||||
ACPI_GET_DESCRIPTOR_TYPE (Object)));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
||||
"%p is not not an ACPI operand obj [%s]\n",
|
||||
Object, AcpiUtGetDescriptorName (Object)));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -406,7 +387,8 @@ AcpiUtDeleteObjectDesc (
|
||||
if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Obj %p is not an ACPI object\n", Object));
|
||||
"%p is not an ACPI Operand object [%s]\n", Object,
|
||||
AcpiUtGetDescriptorName (Object)));
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user