Resolve conflicts arising from the ACPI CA 20020611 import.
This commit is contained in:
parent
155ce7bfa3
commit
98479b041b
@ -30,8 +30,7 @@
|
|||||||
#include <machine/stdarg.h>
|
#include <machine/stdarg.h>
|
||||||
#include <bootstrap.h>
|
#include <bootstrap.h>
|
||||||
|
|
||||||
#define COMPILER_DEPENDENT_INT64 long long
|
#include "acfreebsd.h"
|
||||||
#define COMPILER_DEPENDENT_UINT64 unsigned long long
|
|
||||||
#include "actypes.h"
|
#include "actypes.h"
|
||||||
#include "actbl.h"
|
#include "actbl.h"
|
||||||
|
|
||||||
|
@ -224,6 +224,7 @@ dev/acpica/Osd/OsdMemory.c optional acpica
|
|||||||
dev/acpica/Osd/OsdSchedule.c optional acpica
|
dev/acpica/Osd/OsdSchedule.c optional acpica
|
||||||
dev/acpica/Osd/OsdStream.c optional acpica
|
dev/acpica/Osd/OsdStream.c optional acpica
|
||||||
dev/acpica/Osd/OsdSynch.c optional acpica
|
dev/acpica/Osd/OsdSynch.c optional acpica
|
||||||
|
dev/acpica/Osd/OsdTable.c optional acpica
|
||||||
dev/advansys/adv_eisa.c optional adv eisa
|
dev/advansys/adv_eisa.c optional adv eisa
|
||||||
dev/advansys/adv_pci.c optional adv pci
|
dev/advansys/adv_pci.c optional adv pci
|
||||||
dev/advansys/advansys.c optional adv
|
dev/advansys/advansys.c optional adv
|
||||||
|
@ -145,36 +145,36 @@
|
|||||||
|
|
||||||
/* Version string */
|
/* Version string */
|
||||||
|
|
||||||
#define ACPI_CA_VERSION 0x20020403
|
#define ACPI_CA_VERSION 0x20020611
|
||||||
|
|
||||||
/* Version of ACPI supported */
|
/* Version of ACPI supported */
|
||||||
|
|
||||||
#define ACPI_CA_SUPPORT_LEVEL 2
|
#define ACPI_CA_SUPPORT_LEVEL 2
|
||||||
|
|
||||||
/* Maximum objects in the various object caches */
|
/* Maximum objects in the various object caches */
|
||||||
|
|
||||||
#define MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */
|
#define MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */
|
||||||
#define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
#define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
||||||
#define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */
|
#define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */
|
||||||
#define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
|
#define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
|
||||||
#define MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */
|
#define MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */
|
||||||
|
|
||||||
/* String size constants */
|
/* String size constants */
|
||||||
|
|
||||||
#define MAX_STRING_LENGTH 512
|
#define MAX_STRING_LENGTH 512
|
||||||
#define PATHNAME_MAX 256 /* A full namespace pathname */
|
#define PATHNAME_MAX 256 /* A full namespace pathname */
|
||||||
|
|
||||||
/* Maximum count for a semaphore object */
|
/* Maximum count for a semaphore object */
|
||||||
|
|
||||||
#define MAX_SEMAPHORE_COUNT 256
|
#define MAX_SEMAPHORE_COUNT 256
|
||||||
|
|
||||||
/* Max reference count (for debug only) */
|
/* Max reference count (for debug only) */
|
||||||
|
|
||||||
#define MAX_REFERENCE_COUNT 0x400
|
#define MAX_REFERENCE_COUNT 0x400
|
||||||
|
|
||||||
/* Size of cached memory mapping for system memory operation region */
|
/* Size of cached memory mapping for system memory operation region */
|
||||||
|
|
||||||
#define SYSMEM_REGION_WINDOW_SIZE 4096
|
#define SYSMEM_REGION_WINDOW_SIZE 4096
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@ -183,31 +183,12 @@
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* Debugger threading model
|
|
||||||
* Use single threaded if the entire subsystem is contained in an application
|
|
||||||
* Use multiple threaded when the subsystem is running in the kernel.
|
|
||||||
*
|
|
||||||
* By default the model is single threaded if ACPI_APPLICATION is set,
|
|
||||||
* multi-threaded if ACPI_APPLICATION is not set.
|
|
||||||
*/
|
|
||||||
#define DEBUGGER_SINGLE_THREADED 0
|
|
||||||
#define DEBUGGER_MULTI_THREADED 1
|
|
||||||
|
|
||||||
#ifndef DEBUGGER_THREADING
|
|
||||||
#ifdef ACPI_APPLICATION
|
|
||||||
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
|
||||||
|
|
||||||
#else
|
|
||||||
#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Should the subystem abort the loading of an ACPI table if the
|
* Should the subystem abort the loading of an ACPI table if the
|
||||||
* table checksum is incorrect?
|
* table checksum is incorrect?
|
||||||
*/
|
*/
|
||||||
#define ACPI_CHECKSUM_ABORT FALSE
|
#define ACPI_CHECKSUM_ABORT FALSE
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@ -218,54 +199,54 @@
|
|||||||
|
|
||||||
/* Number of distinct GPE register blocks */
|
/* Number of distinct GPE register blocks */
|
||||||
|
|
||||||
#define ACPI_MAX_GPE_BLOCKS 2
|
#define ACPI_MAX_GPE_BLOCKS 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Method info (in WALK_STATE), containing local variables and argumetns
|
* Method info (in WALK_STATE), containing local variables and argumetns
|
||||||
*/
|
*/
|
||||||
#define MTH_NUM_LOCALS 8
|
#define MTH_NUM_LOCALS 8
|
||||||
#define MTH_MAX_LOCAL 7
|
#define MTH_MAX_LOCAL 7
|
||||||
|
|
||||||
#define MTH_NUM_ARGS 7
|
#define MTH_NUM_ARGS 7
|
||||||
#define MTH_MAX_ARG 6
|
#define MTH_MAX_ARG 6
|
||||||
|
|
||||||
/* Maximum length of resulting string when converting from a buffer */
|
/* Maximum length of resulting string when converting from a buffer */
|
||||||
|
|
||||||
#define ACPI_MAX_STRING_CONVERSION 200
|
#define ACPI_MAX_STRING_CONVERSION 200
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Operand Stack (in WALK_STATE), Must be large enough to contain MTH_MAX_ARG
|
* Operand Stack (in WALK_STATE), Must be large enough to contain MTH_MAX_ARG
|
||||||
*/
|
*/
|
||||||
#define OBJ_NUM_OPERANDS 8
|
#define OBJ_NUM_OPERANDS 8
|
||||||
#define OBJ_MAX_OPERAND 7
|
#define OBJ_MAX_OPERAND 7
|
||||||
|
|
||||||
/* Names within the namespace are 4 bytes long */
|
/* Names within the namespace are 4 bytes long */
|
||||||
|
|
||||||
#define ACPI_NAME_SIZE 4
|
#define ACPI_NAME_SIZE 4
|
||||||
#define PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
|
#define PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
|
||||||
#define PATH_SEPARATOR '.'
|
#define PATH_SEPARATOR '.'
|
||||||
|
|
||||||
/* Constants used in searching for the RSDP in low memory */
|
/* Constants used in searching for the RSDP in low memory */
|
||||||
|
|
||||||
#define LO_RSDP_WINDOW_BASE 0 /* Physical Address */
|
#define LO_RSDP_WINDOW_BASE 0 /* Physical Address */
|
||||||
#define HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */
|
#define HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */
|
||||||
#define LO_RSDP_WINDOW_SIZE 0x400
|
#define LO_RSDP_WINDOW_SIZE 0x400
|
||||||
#define HI_RSDP_WINDOW_SIZE 0x20000
|
#define HI_RSDP_WINDOW_SIZE 0x20000
|
||||||
#define RSDP_SCAN_STEP 16
|
#define RSDP_SCAN_STEP 16
|
||||||
|
|
||||||
/* Operation regions */
|
/* Operation regions */
|
||||||
|
|
||||||
#define ACPI_NUM_PREDEFINED_REGIONS 8
|
#define ACPI_NUM_PREDEFINED_REGIONS 8
|
||||||
#define ACPI_USER_REGION_BEGIN 0x80
|
#define ACPI_USER_REGION_BEGIN 0x80
|
||||||
|
|
||||||
/* Maximum SpaceIds for Operation Regions */
|
/* Maximum SpaceIds for Operation Regions */
|
||||||
|
|
||||||
#define ACPI_MAX_ADDRESS_SPACE 255
|
#define ACPI_MAX_ADDRESS_SPACE 255
|
||||||
|
|
||||||
/* RSDP checksums */
|
/* RSDP checksums */
|
||||||
|
|
||||||
#define ACPI_RSDP_CHECKSUM_LENGTH 20
|
#define ACPI_RSDP_CHECKSUM_LENGTH 20
|
||||||
#define ACPI_RSDP_XCHECKSUM_LENGTH 36
|
#define ACPI_RSDP_XCHECKSUM_LENGTH 36
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@ -275,10 +256,10 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */
|
#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */
|
||||||
|
|
||||||
#define ACPI_DEBUGGER_COMMAND_PROMPT '-'
|
#define ACPI_DEBUGGER_COMMAND_PROMPT '-'
|
||||||
#define ACPI_DEBUGGER_EXECUTE_PROMPT '%'
|
#define ACPI_DEBUGGER_EXECUTE_PROMPT '%'
|
||||||
|
|
||||||
|
|
||||||
#endif /* _ACCONFIG_H */
|
#endif /* _ACCONFIG_H */
|
||||||
|
@ -256,12 +256,14 @@
|
|||||||
#define DEBUGGER_SINGLE_THREADED 0
|
#define DEBUGGER_SINGLE_THREADED 0
|
||||||
#define DEBUGGER_MULTI_THREADED 1
|
#define DEBUGGER_MULTI_THREADED 1
|
||||||
|
|
||||||
|
#ifndef DEBUGGER_THREADING
|
||||||
#ifdef ACPI_APPLICATION
|
#ifdef ACPI_APPLICATION
|
||||||
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED
|
#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -136,20 +136,165 @@
|
|||||||
#include <sys/libkern.h>
|
#include <sys/libkern.h>
|
||||||
#include <machine/stdarg.h>
|
#include <machine/stdarg.h>
|
||||||
|
|
||||||
#define asm __asm
|
#ifdef __ia64__
|
||||||
#define __cli() disable_intr()
|
#define _IA64
|
||||||
#define __sti() enable_intr()
|
|
||||||
#ifdef __i386__
|
/*
|
||||||
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
|
* Calling conventions:
|
||||||
#else
|
*
|
||||||
#define ACPI_FLUSH_CPU_CACHE() /* XXX ia64_fc()? */
|
* ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)
|
||||||
#endif
|
* ACPI_EXTERNAL_XFACE - External ACPI interfaces
|
||||||
|
* ACPI_INTERNAL_XFACE - Internal ACPI interfaces
|
||||||
|
* ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces
|
||||||
|
*/
|
||||||
|
#define ACPI_SYSTEM_XFACE
|
||||||
|
#define ACPI_EXTERNAL_XFACE
|
||||||
|
#define ACPI_INTERNAL_XFACE
|
||||||
|
#define ACPI_INTERNAL_VAR_XFACE
|
||||||
|
|
||||||
|
/* Asm macros */
|
||||||
|
|
||||||
|
#define ACPI_ASM_MACROS
|
||||||
|
#define BREAKPOINT3
|
||||||
|
#define ACPI_DISABLE_IRQS() disable_intr()
|
||||||
|
#define ACPI_ENABLE_IRQS() enable_intr()
|
||||||
|
|
||||||
|
#define ACPI_FLUSH_CPU_CACHE() /* XXX ia64_fc()? */
|
||||||
|
|
||||||
|
/*! [Begin] no source code translation */
|
||||||
|
|
||||||
|
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
||||||
|
do { \
|
||||||
|
__asm__ volatile ("1: ld4 r29=%1\n" \
|
||||||
|
";;\n" \
|
||||||
|
"mov ar.ccv=r29\n" \
|
||||||
|
"mov r2=r29\n" \
|
||||||
|
"shr.u r30=r29,1\n" \
|
||||||
|
"and r29=-4,r29\n" \
|
||||||
|
";;\n" \
|
||||||
|
"add r29=2,r29\n" \
|
||||||
|
"and r30=1,r30\n" \
|
||||||
|
";;\n" \
|
||||||
|
"add r29=r29,r30\n" \
|
||||||
|
";;\n" \
|
||||||
|
"cmpxchg4.acq r30=%1,r29,ar.ccv\n" \
|
||||||
|
";;\n" \
|
||||||
|
"cmp.eq p6,p7=r2,r30\n" \
|
||||||
|
"(p7) br.dpnt.few 1b\n" \
|
||||||
|
"cmp.gt p8,p9=3,r29\n" \
|
||||||
|
";;\n" \
|
||||||
|
"(p8) mov %0=-1\n" \
|
||||||
|
"(p9) mov %0=r0\n" \
|
||||||
|
:"=r"(Acq):"m"(GLptr):"r2","r29","r30","memory"); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \
|
||||||
|
do { \
|
||||||
|
__asm__ volatile ("1: ld4 r29=%1\n" \
|
||||||
|
";;\n" \
|
||||||
|
"mov ar.ccv=r29\n" \
|
||||||
|
"mov r2=r29\n" \
|
||||||
|
"and r29=-4,r29\n" \
|
||||||
|
";;\n" \
|
||||||
|
"cmpxchg4.acq r30=%1,r29,ar.ccv\n" \
|
||||||
|
";;\n" \
|
||||||
|
"cmp.eq p6,p7=r2,r30\n" \
|
||||||
|
"(p7) br.dpnt.few 1b\n" \
|
||||||
|
"and %0=1,r2\n" \
|
||||||
|
";;\n" \
|
||||||
|
:"=r"(Acq):"m"(GLptr):"r2","r29","r30","memory"); \
|
||||||
|
} while (0)
|
||||||
|
/*! [End] no source code translation !*/
|
||||||
|
|
||||||
|
|
||||||
|
#else /* DO IA32 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Calling conventions:
|
||||||
|
*
|
||||||
|
* ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)
|
||||||
|
* ACPI_EXTERNAL_XFACE - External ACPI interfaces
|
||||||
|
* ACPI_INTERNAL_XFACE - Internal ACPI interfaces
|
||||||
|
* ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces
|
||||||
|
*/
|
||||||
|
#define ACPI_SYSTEM_XFACE
|
||||||
|
#define ACPI_EXTERNAL_XFACE
|
||||||
|
#define ACPI_INTERNAL_XFACE
|
||||||
|
#define ACPI_INTERNAL_VAR_XFACE
|
||||||
|
|
||||||
|
/* Asm macros */
|
||||||
|
|
||||||
|
#define ACPI_ASM_MACROS
|
||||||
|
#define BREAKPOINT3
|
||||||
|
#define ACPI_DISABLE_IRQS() disable_intr()
|
||||||
|
#define ACPI_ENABLE_IRQS() enable_intr()
|
||||||
|
|
||||||
|
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
|
||||||
|
|
||||||
|
#define asm __asm
|
||||||
|
/*! [Begin] no source code translation
|
||||||
|
*
|
||||||
|
* A brief explanation as GNU inline assembly is a bit hairy
|
||||||
|
* %0 is the output parameter in EAX ("=a")
|
||||||
|
* %1 and %2 are the input parameters in ECX ("c")
|
||||||
|
* and an immediate value ("i") respectively
|
||||||
|
* All actual register references are preceded with "%%" as in "%%edx"
|
||||||
|
* Immediate values in the assembly are preceded by "$" as in "$0x1"
|
||||||
|
* The final asm parameter are the operation altered non-output registers.
|
||||||
|
*/
|
||||||
|
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
||||||
|
do { \
|
||||||
|
int dummy; \
|
||||||
|
asm("1: movl (%1),%%eax;" \
|
||||||
|
"movl %%eax,%%edx;" \
|
||||||
|
"andl %2,%%edx;" \
|
||||||
|
"btsl $0x1,%%edx;" \
|
||||||
|
"adcl $0x0,%%edx;" \
|
||||||
|
"lock; cmpxchgl %%edx,(%1);" \
|
||||||
|
"jnz 1b;" \
|
||||||
|
"cmpb $0x3,%%dl;" \
|
||||||
|
"sbbl %%eax,%%eax" \
|
||||||
|
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~1L):"dx"); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \
|
||||||
|
do { \
|
||||||
|
int dummy; \
|
||||||
|
asm("1: movl (%1),%%eax;" \
|
||||||
|
"movl %%eax,%%edx;" \
|
||||||
|
"andl %2,%%edx;" \
|
||||||
|
"lock; cmpxchgl %%edx,(%1);" \
|
||||||
|
"jnz 1b;" \
|
||||||
|
"andl $0x1,%%eax" \
|
||||||
|
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~3L):"dx"); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Math helper asm macros
|
||||||
|
*/
|
||||||
|
#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
|
||||||
|
asm("divl %2;" \
|
||||||
|
:"=a"(q32), "=d"(r32) \
|
||||||
|
:"r"(d32), \
|
||||||
|
"0"(n_lo), "1"(n_hi))
|
||||||
|
|
||||||
|
|
||||||
|
#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
|
||||||
|
asm("shrl $1,%2;" \
|
||||||
|
"rcrl $1,%3;" \
|
||||||
|
:"=r"(n_hi), "=r"(n_lo) \
|
||||||
|
:"0"(n_hi), "1"(n_lo))
|
||||||
|
|
||||||
|
/*! [End] no source code translation !*/
|
||||||
|
|
||||||
|
#endif /* IA 32 */
|
||||||
|
|
||||||
#ifdef ACPI_DEBUG
|
|
||||||
#ifdef DEBUGGER_THREADING
|
#ifdef DEBUGGER_THREADING
|
||||||
#undef DEBUGGER_THREADING
|
#undef DEBUGGER_THREADING
|
||||||
#endif /* DEBUGGER_THREADING */
|
#endif /* DEBUGGER_THREADING */
|
||||||
#define DEBUGGER_THREADING 0 /* integrated with DDB */
|
#define DEBUGGER_THREADING 0 /* integrated with DDB */
|
||||||
|
#ifdef ACPI_DEBUG
|
||||||
#include "opt_ddb.h"
|
#include "opt_ddb.h"
|
||||||
#ifdef DDB
|
#ifdef DDB
|
||||||
#define ENABLE_DEBUGGER
|
#define ENABLE_DEBUGGER
|
||||||
@ -204,4 +349,15 @@ strstr(char *s, char *find)
|
|||||||
}
|
}
|
||||||
#endif /* _KERNEL */
|
#endif /* _KERNEL */
|
||||||
|
|
||||||
|
#if defined(__ia64__) || defined(__x86_64__)
|
||||||
|
#define ACPI_MACHINE_WIDTH 64
|
||||||
|
#define COMPILER_DEPENDENT_INT64 long
|
||||||
|
#define COMPILER_DEPENDENT_UINT64 unsigned long
|
||||||
|
#else
|
||||||
|
#define ACPI_MACHINE_WIDTH 32
|
||||||
|
#define COMPILER_DEPENDENT_INT64 long long
|
||||||
|
#define COMPILER_DEPENDENT_UINT64 unsigned long long
|
||||||
|
#define ACPI_USE_NATIVE_DIVIDE
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ACFREEBSD_H__ */
|
#endif /* __ACFREEBSD_H__ */
|
||||||
|
@ -117,168 +117,6 @@
|
|||||||
#ifndef __ACGCC_H__
|
#ifndef __ACGCC_H__
|
||||||
#define __ACGCC_H__
|
#define __ACGCC_H__
|
||||||
|
|
||||||
|
|
||||||
#ifdef __ia64__
|
|
||||||
#define _IA64
|
|
||||||
|
|
||||||
#define COMPILER_DEPENDENT_INT64 long
|
|
||||||
#define COMPILER_DEPENDENT_UINT64 unsigned long
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Calling conventions:
|
|
||||||
*
|
|
||||||
* ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)
|
|
||||||
* ACPI_EXTERNAL_XFACE - External ACPI interfaces
|
|
||||||
* ACPI_INTERNAL_XFACE - Internal ACPI interfaces
|
|
||||||
* ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces
|
|
||||||
*/
|
|
||||||
#define ACPI_SYSTEM_XFACE
|
|
||||||
#define ACPI_EXTERNAL_XFACE
|
|
||||||
#define ACPI_INTERNAL_XFACE
|
|
||||||
#define ACPI_INTERNAL_VAR_XFACE
|
|
||||||
|
|
||||||
/* Single threaded */
|
|
||||||
|
|
||||||
#ifndef __FreeBSD__
|
|
||||||
#define ACPI_APPLICATION
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Asm macros */
|
|
||||||
|
|
||||||
#define ACPI_ASM_MACROS
|
|
||||||
#define BREAKPOINT3
|
|
||||||
#define ACPI_DISABLE_IRQS() __cli()
|
|
||||||
#define ACPI_ENABLE_IRQS() __sti()
|
|
||||||
|
|
||||||
/*! [Begin] no source code translation */
|
|
||||||
|
|
||||||
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
|
||||||
do { \
|
|
||||||
__asm__ volatile ("1: ld4 r29=%1\n" \
|
|
||||||
";;\n" \
|
|
||||||
"mov ar.ccv=r29\n" \
|
|
||||||
"mov r2=r29\n" \
|
|
||||||
"shr.u r30=r29,1\n" \
|
|
||||||
"and r29=-4,r29\n" \
|
|
||||||
";;\n" \
|
|
||||||
"add r29=2,r29\n" \
|
|
||||||
"and r30=1,r30\n" \
|
|
||||||
";;\n" \
|
|
||||||
"add r29=r29,r30\n" \
|
|
||||||
";;\n" \
|
|
||||||
"cmpxchg4.acq r30=%1,r29,ar.ccv\n" \
|
|
||||||
";;\n" \
|
|
||||||
"cmp.eq p6,p7=r2,r30\n" \
|
|
||||||
"(p7) br.dpnt.few 1b\n" \
|
|
||||||
"cmp.gt p8,p9=3,r29\n" \
|
|
||||||
";;\n" \
|
|
||||||
"(p8) mov %0=-1\n" \
|
|
||||||
"(p9) mov %0=r0\n" \
|
|
||||||
:"=r"(Acq):"m"(GLptr):"r2","r29","r30","memory"); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \
|
|
||||||
do { \
|
|
||||||
__asm__ volatile ("1: ld4 r29=%1\n" \
|
|
||||||
";;\n" \
|
|
||||||
"mov ar.ccv=r29\n" \
|
|
||||||
"mov r2=r29\n" \
|
|
||||||
"and r29=-4,r29\n" \
|
|
||||||
";;\n" \
|
|
||||||
"cmpxchg4.acq r30=%1,r29,ar.ccv\n" \
|
|
||||||
";;\n" \
|
|
||||||
"cmp.eq p6,p7=r2,r30\n" \
|
|
||||||
"(p7) br.dpnt.few 1b\n" \
|
|
||||||
"and %0=1,r2\n" \
|
|
||||||
";;\n" \
|
|
||||||
:"=r"(Acq):"m"(GLptr):"r2","r29","r30","memory"); \
|
|
||||||
} while (0)
|
|
||||||
/*! [End] no source code translation !*/
|
|
||||||
|
|
||||||
|
|
||||||
#else /* DO IA32 */
|
|
||||||
|
|
||||||
#define COMPILER_DEPENDENT_INT64 long long
|
|
||||||
#define COMPILER_DEPENDENT_UINT64 unsigned long long
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Calling conventions:
|
|
||||||
*
|
|
||||||
* ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads)
|
|
||||||
* ACPI_EXTERNAL_XFACE - External ACPI interfaces
|
|
||||||
* ACPI_INTERNAL_XFACE - Internal ACPI interfaces
|
|
||||||
* ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces
|
|
||||||
*/
|
|
||||||
#define ACPI_SYSTEM_XFACE
|
|
||||||
#define ACPI_EXTERNAL_XFACE
|
|
||||||
#define ACPI_INTERNAL_XFACE
|
|
||||||
#define ACPI_INTERNAL_VAR_XFACE
|
|
||||||
|
|
||||||
/* Asm macros */
|
|
||||||
|
|
||||||
#define ACPI_ASM_MACROS
|
|
||||||
#define BREAKPOINT3
|
|
||||||
#define ACPI_DISABLE_IRQS() __cli()
|
|
||||||
#define ACPI_ENABLE_IRQS() __sti()
|
|
||||||
|
|
||||||
/*! [Begin] no source code translation
|
|
||||||
*
|
|
||||||
* A brief explanation as GNU inline assembly is a bit hairy
|
|
||||||
* %0 is the output parameter in EAX ("=a")
|
|
||||||
* %1 and %2 are the input parameters in ECX ("c")
|
|
||||||
* and an immediate value ("i") respectively
|
|
||||||
* All actual register references are preceded with "%%" as in "%%edx"
|
|
||||||
* Immediate values in the assembly are preceded by "$" as in "$0x1"
|
|
||||||
* The final asm parameter are the operation altered non-output registers.
|
|
||||||
*/
|
|
||||||
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
|
||||||
do { \
|
|
||||||
int dummy; \
|
|
||||||
asm("1: movl (%1),%%eax;" \
|
|
||||||
"movl %%eax,%%edx;" \
|
|
||||||
"andl %2,%%edx;" \
|
|
||||||
"btsl $0x1,%%edx;" \
|
|
||||||
"adcl $0x0,%%edx;" \
|
|
||||||
"lock; cmpxchgl %%edx,(%1);" \
|
|
||||||
"jnz 1b;" \
|
|
||||||
"cmpb $0x3,%%dl;" \
|
|
||||||
"sbbl %%eax,%%eax" \
|
|
||||||
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~1L):"dx"); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \
|
|
||||||
do { \
|
|
||||||
int dummy; \
|
|
||||||
asm("1: movl (%1),%%eax;" \
|
|
||||||
"movl %%eax,%%edx;" \
|
|
||||||
"andl %2,%%edx;" \
|
|
||||||
"lock; cmpxchgl %%edx,(%1);" \
|
|
||||||
"jnz 1b;" \
|
|
||||||
"andl $0x1,%%eax" \
|
|
||||||
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~3L):"dx"); \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Math helper asm macros
|
|
||||||
*/
|
|
||||||
#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
|
|
||||||
asm("divl %2;" \
|
|
||||||
:"=a"(q32), "=d"(r32) \
|
|
||||||
:"r"(d32), \
|
|
||||||
"0"(n_lo), "1"(n_hi))
|
|
||||||
|
|
||||||
|
|
||||||
#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
|
|
||||||
asm("shrl $1,%2;" \
|
|
||||||
"rcrl $1,%3;" \
|
|
||||||
:"=r"(n_hi), "=r"(n_lo) \
|
|
||||||
:"0"(n_hi), "1"(n_lo))
|
|
||||||
|
|
||||||
/*! [End] no source code translation !*/
|
|
||||||
|
|
||||||
#endif /* IA 32 */
|
|
||||||
|
|
||||||
/* This macro is used to tag functions as "printf-like" because
|
/* This macro is used to tag functions as "printf-like" because
|
||||||
* some compilers (like GCC) can catch printf format string problems.
|
* some compilers (like GCC) can catch printf format string problems.
|
||||||
*/
|
*/
|
||||||
|
@ -162,6 +162,10 @@ ACPI_STATUS
|
|||||||
AcpiPurgeCachedObjects (
|
AcpiPurgeCachedObjects (
|
||||||
void);
|
void);
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiInstallInitializationHandler (
|
||||||
|
ACPI_INIT_HANDLER Handler,
|
||||||
|
UINT32 Function);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ACPI Memory manager
|
* ACPI Memory manager
|
||||||
@ -282,6 +286,14 @@ AcpiEvaluateObject (
|
|||||||
ACPI_OBJECT_LIST *ParameterObjects,
|
ACPI_OBJECT_LIST *ParameterObjects,
|
||||||
ACPI_BUFFER *ReturnObjectBuffer);
|
ACPI_BUFFER *ReturnObjectBuffer);
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiEvaluateObjectTyped (
|
||||||
|
ACPI_HANDLE Object,
|
||||||
|
ACPI_STRING Pathname,
|
||||||
|
ACPI_OBJECT_LIST *ExternalParams,
|
||||||
|
ACPI_BUFFER *ReturnBuffer,
|
||||||
|
ACPI_OBJECT_TYPE ReturnType);
|
||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AcpiGetObjectInfo (
|
AcpiGetObjectInfo (
|
||||||
ACPI_HANDLE Device,
|
ACPI_HANDLE Device,
|
||||||
@ -420,6 +432,18 @@ AcpiGetIrqRoutingTable (
|
|||||||
* Hardware (ACPI device) interfaces
|
* Hardware (ACPI device) interfaces
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiGetRegister (
|
||||||
|
UINT32 RegisterId,
|
||||||
|
UINT32 *ReturnValue,
|
||||||
|
UINT32 Flags);
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiSetRegister (
|
||||||
|
UINT32 RegisterId,
|
||||||
|
UINT32 Value,
|
||||||
|
UINT32 Flags);
|
||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AcpiSetFirmwareWakingVector (
|
AcpiSetFirmwareWakingVector (
|
||||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress);
|
ACPI_PHYSICAL_ADDRESS PhysicalAddress);
|
||||||
@ -428,17 +452,23 @@ ACPI_STATUS
|
|||||||
AcpiGetFirmwareWakingVector (
|
AcpiGetFirmwareWakingVector (
|
||||||
ACPI_PHYSICAL_ADDRESS *PhysicalAddress);
|
ACPI_PHYSICAL_ADDRESS *PhysicalAddress);
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiGetSleepTypeData (
|
||||||
|
UINT8 SleepState,
|
||||||
|
UINT8 *Slp_TypA,
|
||||||
|
UINT8 *Slp_TypB);
|
||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AcpiEnterSleepStatePrep (
|
AcpiEnterSleepStatePrep (
|
||||||
UINT8 SleepState);
|
UINT8 SleepState);
|
||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AcpiEnterSleepState (
|
AcpiEnterSleepState (
|
||||||
UINT8 SleepState);
|
UINT8 SleepState);
|
||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AcpiLeaveSleepState (
|
AcpiLeaveSleepState (
|
||||||
UINT8 SleepState);
|
UINT8 SleepState);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ACXFACE_H__ */
|
#endif /* __ACXFACE_H__ */
|
||||||
|
@ -191,6 +191,9 @@ NATIVE_CHAR *
|
|||||||
AcpiUtGetMutexName (
|
AcpiUtGetMutexName (
|
||||||
UINT32 MutexId);
|
UINT32 MutexId);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
NATIVE_CHAR *
|
NATIVE_CHAR *
|
||||||
AcpiUtGetTypeName (
|
AcpiUtGetTypeName (
|
||||||
ACPI_OBJECT_TYPE Type);
|
ACPI_OBJECT_TYPE Type);
|
||||||
@ -199,9 +202,6 @@ NATIVE_CHAR *
|
|||||||
AcpiUtGetObjectTypeName (
|
AcpiUtGetObjectTypeName (
|
||||||
ACPI_OPERAND_OBJECT *ObjDesc);
|
ACPI_OPERAND_OBJECT *ObjDesc);
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
NATIVE_CHAR *
|
NATIVE_CHAR *
|
||||||
AcpiUtGetRegionName (
|
AcpiUtGetRegionName (
|
||||||
UINT8 SpaceId);
|
UINT8 SpaceId);
|
||||||
|
@ -131,7 +131,7 @@
|
|||||||
#define BLOCK_PAREN 1
|
#define BLOCK_PAREN 1
|
||||||
#define BLOCK_BRACE 2
|
#define BLOCK_BRACE 2
|
||||||
#define DB_NO_OP_INFO " [%2.2d] "
|
#define DB_NO_OP_INFO " [%2.2d] "
|
||||||
#define DB_FULL_OP_INFO "%5.5X #%4.4X [%2.2d] "
|
#define DB_FULL_OP_INFO "%5.5X #%4.4hX [%2.2d] "
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ AcpiDbBlockType (
|
|||||||
ACPI_PARSE_OBJECT *Op)
|
ACPI_PARSE_OBJECT *Op)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch (Op->Opcode)
|
switch (Op->Common.AmlOpcode)
|
||||||
{
|
{
|
||||||
case AML_METHOD_OP:
|
case AML_METHOD_OP:
|
||||||
return (BLOCK_BRACE);
|
return (BLOCK_BRACE);
|
||||||
@ -191,9 +191,9 @@ AcpiPsDisplayObjectPathname (
|
|||||||
char *Name;
|
char *Name;
|
||||||
|
|
||||||
|
|
||||||
if (Op->Flags & ACPI_PARSEOP_GENERIC)
|
if (Op->Common.Flags & ACPI_PARSEOP_GENERIC)
|
||||||
{
|
{
|
||||||
Name = Op->Value.Name;
|
Name = Op->Common.Value.Name;
|
||||||
if (Name[0] == '\\')
|
if (Name[0] == '\\')
|
||||||
{
|
{
|
||||||
AcpiOsPrintf (" (Fully Qualified Pathname)");
|
AcpiOsPrintf (" (Fully Qualified Pathname)");
|
||||||
@ -202,7 +202,7 @@ AcpiPsDisplayObjectPathname (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Name = (char *) &((ACPI_PARSE2_OBJECT *) Op)->Name;
|
Name = (char *) &Op->Named.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Search parent tree up to the root if necessary */
|
/* Search parent tree up to the root if necessary */
|
||||||
@ -250,12 +250,12 @@ AcpiPsDisplayObjectPathname (
|
|||||||
|
|
||||||
/* Just get the Node out of the Op object */
|
/* Just get the Node out of the Op object */
|
||||||
|
|
||||||
Node = Op->Node;
|
Node = Op->Common.Node;
|
||||||
if (!Node)
|
if (!Node)
|
||||||
{
|
{
|
||||||
/* Node not defined in this scope, look it up */
|
/* Node not defined in this scope, look it up */
|
||||||
|
|
||||||
Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Value.String, ACPI_TYPE_ANY,
|
Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Common.Value.String, ACPI_TYPE_ANY,
|
||||||
ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node));
|
ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node));
|
||||||
|
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
@ -271,7 +271,7 @@ AcpiPsDisplayObjectPathname (
|
|||||||
|
|
||||||
/* Save it for next time. */
|
/* Save it for next time. */
|
||||||
|
|
||||||
Op->Node = Node;
|
Op->Common.Node = Node;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert NamedDesc/handle to a full pathname */
|
/* Convert NamedDesc/handle to a full pathname */
|
||||||
@ -345,12 +345,12 @@ AcpiDbDisplayOp (
|
|||||||
|
|
||||||
/* Determine the nesting depth of this argument */
|
/* Determine the nesting depth of this argument */
|
||||||
|
|
||||||
for (depth = Op->Parent; depth; depth = depth->Parent)
|
for (depth = Op->Common.Parent; depth; depth = depth->Common.Parent)
|
||||||
{
|
{
|
||||||
arg = AcpiPsGetArg (depth, 0);
|
arg = AcpiPsGetArg (depth, 0);
|
||||||
while (arg && arg != Origin)
|
while (arg && arg != Origin)
|
||||||
{
|
{
|
||||||
arg = arg->Next;
|
arg = arg->Common.Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg)
|
if (arg)
|
||||||
@ -385,10 +385,10 @@ AcpiDbDisplayOp (
|
|||||||
|
|
||||||
else if (DepthCount < LastDepth)
|
else if (DepthCount < LastDepth)
|
||||||
{
|
{
|
||||||
for (j = 0; j < (LastDepth - DepthCount); j++)
|
for (j = LastDepth; j >= (DepthCount + 1); j--)
|
||||||
{
|
{
|
||||||
VERBOSE_PRINT ((DB_NO_OP_INFO, LastDepth - j));
|
VERBOSE_PRINT ((DB_NO_OP_INFO, (j - 1)));
|
||||||
for (i = 0; i < (LastDepth - j - 1); i++)
|
for (i = 1; i < j; i++)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("%s", AcpiGbl_DbDisasmIndent);
|
AcpiOsPrintf ("%s", AcpiGbl_DbDisasmIndent);
|
||||||
}
|
}
|
||||||
@ -406,7 +406,8 @@ AcpiDbDisplayOp (
|
|||||||
|
|
||||||
/* In verbose mode, print the AML offset, opcode and depth count */
|
/* In verbose mode, print the AML offset, opcode and depth count */
|
||||||
|
|
||||||
VERBOSE_PRINT ((DB_FULL_OP_INFO, (unsigned) Op->AmlOffset, Op->Opcode, DepthCount));
|
VERBOSE_PRINT ((DB_FULL_OP_INFO, (UINT32) Op->Common.AmlOffset,
|
||||||
|
Op->Common.AmlOpcode, DepthCount));
|
||||||
|
|
||||||
|
|
||||||
/* Indent the output according to the depth count */
|
/* Indent the output according to the depth count */
|
||||||
@ -422,11 +423,11 @@ AcpiDbDisplayOp (
|
|||||||
|
|
||||||
/* Resolve a name reference */
|
/* Resolve a name reference */
|
||||||
|
|
||||||
if ((Op->Opcode == AML_INT_NAMEPATH_OP && Op->Value.Name) &&
|
if ((Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP && Op->Common.Value.Name) &&
|
||||||
(Op->Parent) &&
|
(Op->Common.Parent) &&
|
||||||
(AcpiGbl_DbOpt_verbose))
|
(AcpiGbl_DbOpt_verbose))
|
||||||
{
|
{
|
||||||
AcpiPsDisplayObjectPathname (WalkState, Op);
|
(void) AcpiPsDisplayObjectPathname (WalkState, Op);
|
||||||
}
|
}
|
||||||
|
|
||||||
AcpiOsPrintf ("\n");
|
AcpiOsPrintf ("\n");
|
||||||
@ -561,7 +562,7 @@ AcpiDbDisplayPath (
|
|||||||
|
|
||||||
/* We are only interested in named objects */
|
/* We are only interested in named objects */
|
||||||
|
|
||||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
if (!(OpInfo->Flags & AML_NSNODE))
|
if (!(OpInfo->Flags & AML_NSNODE))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -571,7 +572,7 @@ AcpiDbDisplayPath (
|
|||||||
{
|
{
|
||||||
/* Field creation - check for a fully qualified namepath */
|
/* Field creation - check for a fully qualified namepath */
|
||||||
|
|
||||||
if (Op->Opcode == AML_CREATE_FIELD_OP)
|
if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)
|
||||||
{
|
{
|
||||||
NamePath = AcpiPsGetArg (Op, 3);
|
NamePath = AcpiPsGetArg (Op, 3);
|
||||||
}
|
}
|
||||||
@ -581,10 +582,10 @@ AcpiDbDisplayPath (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((NamePath) &&
|
if ((NamePath) &&
|
||||||
(NamePath->Value.String) &&
|
(NamePath->Common.Value.String) &&
|
||||||
(NamePath->Value.String[0] == '\\'))
|
(NamePath->Common.Value.String[0] == '\\'))
|
||||||
{
|
{
|
||||||
AcpiDbDisplayNamestring (NamePath->Value.String);
|
AcpiDbDisplayNamestring (NamePath->Common.Value.String);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -598,19 +599,19 @@ AcpiDbDisplayPath (
|
|||||||
Search = Op;
|
Search = Op;
|
||||||
for (; ;)
|
for (; ;)
|
||||||
{
|
{
|
||||||
if (Search->Parent == Prev)
|
if (Search->Common.Parent == Prev)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Go up one level */
|
/* Go up one level */
|
||||||
|
|
||||||
Search = Search->Parent;
|
Search = Search->Common.Parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Prev)
|
if (Prev)
|
||||||
{
|
{
|
||||||
OpInfo = AcpiPsGetOpcodeInfo (Search->Opcode);
|
OpInfo = AcpiPsGetOpcodeInfo (Search->Common.AmlOpcode);
|
||||||
if (!(OpInfo->Flags & AML_FIELD))
|
if (!(OpInfo->Flags & AML_FIELD))
|
||||||
{
|
{
|
||||||
/* below root scope, append scope name */
|
/* below root scope, append scope name */
|
||||||
@ -624,7 +625,7 @@ AcpiDbDisplayPath (
|
|||||||
|
|
||||||
if (OpInfo->Flags & AML_CREATE)
|
if (OpInfo->Flags & AML_CREATE)
|
||||||
{
|
{
|
||||||
if (Op->Opcode == AML_CREATE_FIELD_OP)
|
if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)
|
||||||
{
|
{
|
||||||
NamePath = AcpiPsGetArg (Op, 3);
|
NamePath = AcpiPsGetArg (Op, 3);
|
||||||
}
|
}
|
||||||
@ -634,9 +635,9 @@ AcpiDbDisplayPath (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((NamePath) &&
|
if ((NamePath) &&
|
||||||
(NamePath->Value.String))
|
(NamePath->Common.Value.String))
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("%4.4s", NamePath->Value.String);
|
AcpiOsPrintf ("%4.4s", NamePath->Common.Value.String);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -684,21 +685,22 @@ AcpiDbDisplayOpcode (
|
|||||||
if (!Op)
|
if (!Op)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("<NULL OP PTR>");
|
AcpiOsPrintf ("<NULL OP PTR>");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* op and arguments */
|
/* op and arguments */
|
||||||
|
|
||||||
switch (Op->Opcode)
|
switch (Op->Common.AmlOpcode)
|
||||||
{
|
{
|
||||||
case AML_BYTE_OP:
|
case AML_BYTE_OP:
|
||||||
|
|
||||||
if (AcpiGbl_DbOpt_verbose)
|
if (AcpiGbl_DbOpt_verbose)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("(UINT8) 0x%2.2X", Op->Value.Integer8);
|
AcpiOsPrintf ("(UINT8) 0x%2.2hX", Op->Common.Value.Integer8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("0x%2.2X", Op->Value.Integer8);
|
AcpiOsPrintf ("0x%2.2hX", Op->Common.Value.Integer8);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -707,11 +709,11 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
if (AcpiGbl_DbOpt_verbose)
|
if (AcpiGbl_DbOpt_verbose)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("(UINT16) 0x%4.4X", Op->Value.Integer16);
|
AcpiOsPrintf ("(UINT16) 0x%4.4hX", Op->Common.Value.Integer16);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("0x%4.4X", Op->Value.Integer16);
|
AcpiOsPrintf ("0x%4.4hX", Op->Common.Value.Integer16);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -720,11 +722,11 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
if (AcpiGbl_DbOpt_verbose)
|
if (AcpiGbl_DbOpt_verbose)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("(UINT32) 0x%8.8X", Op->Value.Integer32);
|
AcpiOsPrintf ("(UINT32) 0x%8.8X", Op->Common.Value.Integer32);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("0x%8.8X", Op->Value.Integer32);
|
AcpiOsPrintf ("0x%8.8X", Op->Common.Value.Integer32);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -733,22 +735,22 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
if (AcpiGbl_DbOpt_verbose)
|
if (AcpiGbl_DbOpt_verbose)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("(UINT64) 0x%8.8X%8.8X", Op->Value.Integer64.Hi,
|
AcpiOsPrintf ("(UINT64) 0x%8.8X%8.8X", Op->Common.Value.Integer64.Hi,
|
||||||
Op->Value.Integer64.Lo);
|
Op->Common.Value.Integer64.Lo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("0x%8.8X%8.8X", Op->Value.Integer64.Hi,
|
AcpiOsPrintf ("0x%8.8X%8.8X", Op->Common.Value.Integer64.Hi,
|
||||||
Op->Value.Integer64.Lo);
|
Op->Common.Value.Integer64.Lo);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case AML_STRING_OP:
|
case AML_STRING_OP:
|
||||||
|
|
||||||
if (Op->Value.String)
|
if (Op->Common.Value.String)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("\"%s\"", Op->Value.String);
|
AcpiOsPrintf ("\"%s\"", Op->Common.Value.String);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -759,9 +761,9 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
case AML_INT_STATICSTRING_OP:
|
case AML_INT_STATICSTRING_OP:
|
||||||
|
|
||||||
if (Op->Value.String)
|
if (Op->Common.Value.String)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("\"%s\"", Op->Value.String);
|
AcpiOsPrintf ("\"%s\"", Op->Common.Value.String);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -772,25 +774,25 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
case AML_INT_NAMEPATH_OP:
|
case AML_INT_NAMEPATH_OP:
|
||||||
|
|
||||||
AcpiDbDisplayNamestring (Op->Value.Name);
|
AcpiDbDisplayNamestring (Op->Common.Value.Name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case AML_INT_NAMEDFIELD_OP:
|
case AML_INT_NAMEDFIELD_OP:
|
||||||
|
|
||||||
AcpiOsPrintf ("NamedField (Length 0x%8.8X) ", Op->Value.Integer32);
|
AcpiOsPrintf ("NamedField (Length 0x%8.8X) ", Op->Common.Value.Integer32);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case AML_INT_RESERVEDFIELD_OP:
|
case AML_INT_RESERVEDFIELD_OP:
|
||||||
|
|
||||||
AcpiOsPrintf ("ReservedField (Length 0x%8.8X) ", Op->Value.Integer32);
|
AcpiOsPrintf ("ReservedField (Length 0x%8.8X) ", Op->Common.Value.Integer32);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case AML_INT_ACCESSFIELD_OP:
|
case AML_INT_ACCESSFIELD_OP:
|
||||||
|
|
||||||
AcpiOsPrintf ("AccessField (Length 0x%8.8X) ", Op->Value.Integer32);
|
AcpiOsPrintf ("AccessField (Length 0x%8.8X) ", Op->Common.Value.Integer32);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
@ -798,14 +800,14 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
if (AcpiGbl_DbOpt_verbose)
|
if (AcpiGbl_DbOpt_verbose)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("ByteList (Length 0x%8.8X) ", Op->Value.Integer32);
|
AcpiOsPrintf ("ByteList (Length 0x%8.8X) ", Op->Common.Value.Integer32);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("0x%2.2X", Op->Value.Integer32);
|
AcpiOsPrintf ("0x%2.2X", Op->Common.Value.Integer32);
|
||||||
|
|
||||||
ByteCount = Op->Value.Integer32;
|
ByteCount = Op->Common.Value.Integer32;
|
||||||
ByteData = ((ACPI_PARSE2_OBJECT *) Op)->Data;
|
ByteData = Op->Named.Data;
|
||||||
|
|
||||||
for (i = 0; i < ByteCount; i++)
|
for (i = 0; i < ByteCount; i++)
|
||||||
{
|
{
|
||||||
@ -819,12 +821,13 @@ AcpiDbDisplayOpcode (
|
|||||||
|
|
||||||
/* Just get the opcode name and print it */
|
/* Just get the opcode name and print it */
|
||||||
|
|
||||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
AcpiOsPrintf ("%s", OpInfo->Name);
|
AcpiOsPrintf ("%s", OpInfo->Name);
|
||||||
|
|
||||||
|
|
||||||
#ifndef PARSER_ONLY
|
#ifndef PARSER_ONLY
|
||||||
if ((Op->Opcode == AML_INT_RETURN_VALUE_OP) &&
|
if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) &&
|
||||||
|
(WalkState) &&
|
||||||
(WalkState->Results) &&
|
(WalkState->Results) &&
|
||||||
(WalkState->Results->Results.NumResults))
|
(WalkState->Results->Results.NumResults))
|
||||||
{
|
{
|
||||||
@ -838,7 +841,7 @@ AcpiDbDisplayOpcode (
|
|||||||
{
|
{
|
||||||
/* If there is another element in the list, add a comma */
|
/* If there is another element in the list, add a comma */
|
||||||
|
|
||||||
if (Op->Next)
|
if (Op->Common.Next)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf (",");
|
AcpiOsPrintf (",");
|
||||||
}
|
}
|
||||||
@ -847,15 +850,15 @@ AcpiDbDisplayOpcode (
|
|||||||
/*
|
/*
|
||||||
* If this is a named opcode, print the associated name value
|
* If this is a named opcode, print the associated name value
|
||||||
*/
|
*/
|
||||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
if (Op && (OpInfo->Flags & AML_NAMED))
|
if (Op && (OpInfo->Flags & AML_NAMED))
|
||||||
{
|
{
|
||||||
Name = AcpiPsGetName (Op);
|
Name = AcpiPsGetName (Op);
|
||||||
AcpiOsPrintf (" %4.4s", &Name);
|
AcpiOsPrintf (" %4.4s", &Name);
|
||||||
|
|
||||||
if ((AcpiGbl_DbOpt_verbose) && (Op->Opcode != AML_INT_NAMEDFIELD_OP))
|
if ((AcpiGbl_DbOpt_verbose) && (Op->Common.AmlOpcode != AML_INT_NAMEDFIELD_OP))
|
||||||
{
|
{
|
||||||
AcpiPsDisplayObjectPathname (WalkState, Op);
|
(void) AcpiPsDisplayObjectPathname (WalkState, Op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,8 +119,6 @@
|
|||||||
#include "acpi.h"
|
#include "acpi.h"
|
||||||
#include "acdebug.h"
|
#include "acdebug.h"
|
||||||
#include "acnamesp.h"
|
#include "acnamesp.h"
|
||||||
#include "acparser.h"
|
|
||||||
#include "acevents.h"
|
|
||||||
#include "actables.h"
|
#include "actables.h"
|
||||||
|
|
||||||
#ifdef ENABLE_DEBUGGER
|
#ifdef ENABLE_DEBUGGER
|
||||||
@ -139,7 +137,6 @@ FILE *AcpiGbl_DebugFile = NULL;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiDbMatchArgument
|
* FUNCTION: AcpiDbMatchArgument
|
||||||
@ -262,7 +259,7 @@ AcpiDbOpenDebugFile (
|
|||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
ACPI_STATUS
|
static ACPI_STATUS
|
||||||
AcpiDbLoadTable(
|
AcpiDbLoadTable(
|
||||||
FILE *fp,
|
FILE *fp,
|
||||||
ACPI_TABLE_HEADER **TablePtr,
|
ACPI_TABLE_HEADER **TablePtr,
|
||||||
@ -387,7 +384,7 @@ AeLocalLoadTable (
|
|||||||
|
|
||||||
TableInfo.Pointer = TablePtr;
|
TableInfo.Pointer = TablePtr;
|
||||||
|
|
||||||
Status = AcpiTbInstallTable (NULL, &TableInfo);
|
Status = AcpiTbInstallTable (&TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
/* Free table allocated by AcpiTbGetTable */
|
/* Free table allocated by AcpiTbGetTable */
|
||||||
@ -481,7 +478,7 @@ AcpiDbLoadAcpiTable (
|
|||||||
if (Status == AE_ALREADY_EXISTS)
|
if (Status == AE_ALREADY_EXISTS)
|
||||||
{
|
{
|
||||||
AcpiOsPrintf ("Table %4.4s is already installed\n",
|
AcpiOsPrintf ("Table %4.4s is already installed\n",
|
||||||
&AcpiGbl_DbTablePtr->Signature);
|
AcpiGbl_DbTablePtr->Signature);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -493,7 +490,7 @@ AcpiDbLoadAcpiTable (
|
|||||||
}
|
}
|
||||||
|
|
||||||
AcpiOsPrintf ("%4.4s at %p successfully installed and loaded\n",
|
AcpiOsPrintf ("%4.4s at %p successfully installed and loaded\n",
|
||||||
&AcpiGbl_DbTablePtr->Signature, AcpiGbl_DbTablePtr);
|
AcpiGbl_DbTablePtr->Signature, AcpiGbl_DbTablePtr);
|
||||||
|
|
||||||
AcpiGbl_AcpiHardwarePresent = FALSE;
|
AcpiGbl_AcpiHardwarePresent = FALSE;
|
||||||
|
|
||||||
|
@ -120,8 +120,6 @@
|
|||||||
#include "acpi.h"
|
#include "acpi.h"
|
||||||
#include "acinterp.h"
|
#include "acinterp.h"
|
||||||
#include "amlcode.h"
|
#include "amlcode.h"
|
||||||
#include "acnamesp.h"
|
|
||||||
#include "achware.h"
|
|
||||||
#include "acevents.h"
|
#include "acevents.h"
|
||||||
#include "acdispat.h"
|
#include "acdispat.h"
|
||||||
|
|
||||||
@ -159,10 +157,12 @@ AcpiExSetupRegion (
|
|||||||
|
|
||||||
RgnDesc = ObjDesc->CommonField.RegionObj;
|
RgnDesc = ObjDesc->CommonField.RegionObj;
|
||||||
|
|
||||||
if (ACPI_TYPE_REGION != RgnDesc->Common.Type)
|
if (ACPI_GET_OBJECT_TYPE (RgnDesc) != ACPI_TYPE_REGION)
|
||||||
{
|
{
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %x %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n",
|
||||||
RgnDesc->Common.Type, AcpiUtGetTypeName (RgnDesc->Common.Type)));
|
ACPI_GET_OBJECT_TYPE (RgnDesc),
|
||||||
|
AcpiUtGetObjectTypeName (RgnDesc)));
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,8 +197,8 @@ AcpiExSetupRegion (
|
|||||||
*/
|
*/
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||||
"Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)\n",
|
"Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)\n",
|
||||||
(char *) &ObjDesc->CommonField.Node->Name, ObjDesc->CommonField.AccessByteWidth,
|
ObjDesc->CommonField.Node->Name.Ascii, ObjDesc->CommonField.AccessByteWidth,
|
||||||
(char *) &RgnDesc->Region.Node->Name, RgnDesc->Region.Length));
|
RgnDesc->Region.Node->Name.Ascii, RgnDesc->Region.Length));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -207,9 +207,9 @@ AcpiExSetupRegion (
|
|||||||
*/
|
*/
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||||
"Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)\n",
|
"Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)\n",
|
||||||
(char *) &ObjDesc->CommonField.Node->Name, ObjDesc->CommonField.BaseByteOffset,
|
ObjDesc->CommonField.Node->Name.Ascii, ObjDesc->CommonField.BaseByteOffset,
|
||||||
FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth,
|
FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth,
|
||||||
(char *) &RgnDesc->Region.Node->Name, RgnDesc->Region.Length));
|
RgnDesc->Region.Node->Name.Ascii, RgnDesc->Region.Length));
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_AML_REGION_LIMIT);
|
return_ACPI_STATUS (AE_AML_REGION_LIMIT);
|
||||||
}
|
}
|
||||||
@ -339,7 +339,7 @@ AcpiExRegisterOverflow (
|
|||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Value >= (ACPI_INTEGER) (1 << ObjDesc->CommonField.BitLength))
|
if (Value >= ((ACPI_INTEGER) 1 << ObjDesc->CommonField.BitLength))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* The Value is larger than the maximum value that can fit into
|
* The Value is larger than the maximum value that can fit into
|
||||||
@ -407,7 +407,7 @@ AcpiExFieldDatumIo (
|
|||||||
* BankFields - Write to a Bank Register, then read/write from/to an OpRegion
|
* BankFields - Write to a Bank Register, then read/write from/to an OpRegion
|
||||||
* IndexFields - Write to an Index Register, then read/write from/to a Data Register
|
* IndexFields - Write to an Index Register, then read/write from/to a Data Register
|
||||||
*/
|
*/
|
||||||
switch (ObjDesc->Common.Type)
|
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
|
||||||
{
|
{
|
||||||
case ACPI_TYPE_BUFFER_FIELD:
|
case ACPI_TYPE_BUFFER_FIELD:
|
||||||
/*
|
/*
|
||||||
@ -455,7 +455,7 @@ AcpiExFieldDatumIo (
|
|||||||
/* Ensure that the BankValue is not beyond the capacity of the register */
|
/* Ensure that the BankValue is not beyond the capacity of the register */
|
||||||
|
|
||||||
if (AcpiExRegisterOverflow (ObjDesc->BankField.BankObj,
|
if (AcpiExRegisterOverflow (ObjDesc->BankField.BankObj,
|
||||||
ObjDesc->BankField.Value))
|
(ACPI_INTEGER) ObjDesc->BankField.Value))
|
||||||
{
|
{
|
||||||
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ AcpiExFieldDatumIo (
|
|||||||
* RegionField case and write the datum to the Operation Region
|
* RegionField case and write the datum to the Operation Region
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* No break; ! */
|
/*lint -fallthrough */
|
||||||
|
|
||||||
|
|
||||||
case INTERNAL_TYPE_REGION_FIELD:
|
case INTERNAL_TYPE_REGION_FIELD:
|
||||||
@ -502,7 +502,7 @@ AcpiExFieldDatumIo (
|
|||||||
/* Ensure that the IndexValue is not beyond the capacity of the register */
|
/* Ensure that the IndexValue is not beyond the capacity of the register */
|
||||||
|
|
||||||
if (AcpiExRegisterOverflow (ObjDesc->IndexField.IndexObj,
|
if (AcpiExRegisterOverflow (ObjDesc->IndexField.IndexObj,
|
||||||
ObjDesc->IndexField.Value))
|
(ACPI_INTEGER) ObjDesc->IndexField.Value))
|
||||||
{
|
{
|
||||||
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
||||||
}
|
}
|
||||||
@ -537,7 +537,7 @@ AcpiExFieldDatumIo (
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p, Wrong object type - %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p, Wrong object type - %s\n",
|
||||||
ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type)));
|
ObjDesc, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||||
Status = AE_AML_INTERNAL;
|
Status = AE_AML_INTERNAL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -594,7 +594,7 @@ AcpiExWriteWithUpdateRule (
|
|||||||
|
|
||||||
/* If the mask is all ones, we don't need to worry about the update rule */
|
/* If the mask is all ones, we don't need to worry about the update rule */
|
||||||
|
|
||||||
if (Mask != ACPI_UINT32_MAX)
|
if (Mask != ACPI_INTEGER_MAX)
|
||||||
{
|
{
|
||||||
/* Decode the update rule */
|
/* Decode the update rule */
|
||||||
|
|
||||||
@ -634,7 +634,7 @@ AcpiExWriteWithUpdateRule (
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||||
"WriteWithUpdateRule: Unknown UpdateRule setting: %x\n",
|
"WriteWithUpdateRule: Unknown UpdateRule setting: %X\n",
|
||||||
(ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK)));
|
(ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK)));
|
||||||
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||||
}
|
}
|
||||||
@ -705,6 +705,10 @@ AcpiExGetBufferDatum(
|
|||||||
|
|
||||||
ACPI_MOVE_UNALIGNED64_TO_64 (Datum, &(((UINT64 *) Buffer) [Offset]));
|
ACPI_MOVE_UNALIGNED64_TO_64 (Datum, &(((UINT64 *) Buffer) [Offset]));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* Should not get here */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -758,6 +762,10 @@ AcpiExSetBufferDatum (
|
|||||||
|
|
||||||
ACPI_MOVE_UNALIGNED64_TO_64 (&(((UINT64 *) Buffer)[Offset]), &MergedDatum);
|
ACPI_MOVE_UNALIGNED64_TO_64 (&(((UINT64 *) Buffer)[Offset]), &MergedDatum);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* Should not get here */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -813,7 +821,7 @@ AcpiExExtractFromField (
|
|||||||
ObjDesc->CommonField.AccessByteWidth);
|
ObjDesc->CommonField.AccessByteWidth);
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||||
"ByteLen=%x, DatumLen=%x, ByteGran=%x\n",
|
"ByteLen=%X, DatumLen=%X, ByteGran=%X\n",
|
||||||
ByteFieldLength, DatumCount,ObjDesc->CommonField.AccessByteWidth));
|
ByteFieldLength, DatumCount,ObjDesc->CommonField.AccessByteWidth));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1002,7 +1010,7 @@ AcpiExInsertIntoField (
|
|||||||
DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth);
|
DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth);
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
|
||||||
"ByteLen=%x, DatumLen=%x, ByteGran=%x\n",
|
"ByteLen=%X, DatumLen=%X, ByteGran=%X\n",
|
||||||
ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessByteWidth));
|
ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessByteWidth));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -119,8 +119,6 @@
|
|||||||
|
|
||||||
#include "acpi.h"
|
#include "acpi.h"
|
||||||
#include "acinterp.h"
|
#include "acinterp.h"
|
||||||
#include "acnamesp.h"
|
|
||||||
#include "achware.h"
|
|
||||||
#include "acevents.h"
|
#include "acevents.h"
|
||||||
|
|
||||||
#define _COMPONENT ACPI_EXECUTER
|
#define _COMPONENT ACPI_EXECUTER
|
||||||
@ -347,8 +345,8 @@ AcpiExSystemReleaseMutex (
|
|||||||
*/
|
*/
|
||||||
if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore)
|
if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore)
|
||||||
{
|
{
|
||||||
AcpiEvReleaseGlobalLock ();
|
Status = AcpiEvReleaseGlobalLock ();
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = AcpiOsSignalSemaphore (ObjDesc->Mutex.Semaphore, 1);
|
Status = AcpiOsSignalSemaphore (ObjDesc->Mutex.Semaphore, 1);
|
||||||
@ -454,7 +452,7 @@ AcpiExSystemResetEvent (
|
|||||||
Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore);
|
Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore);
|
||||||
if (ACPI_SUCCESS (Status))
|
if (ACPI_SUCCESS (Status))
|
||||||
{
|
{
|
||||||
AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore);
|
(void) AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore);
|
||||||
ObjDesc->Event.Semaphore = TempSemaphore;
|
ObjDesc->Event.Semaphore = TempSemaphore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,8 +116,6 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "acpi.h"
|
#include "acpi.h"
|
||||||
#include "acnamesp.h"
|
|
||||||
#include "achware.h"
|
|
||||||
|
|
||||||
#define _COMPONENT ACPI_HARDWARE
|
#define _COMPONENT ACPI_HARDWARE
|
||||||
ACPI_MODULE_NAME ("hwsleep")
|
ACPI_MODULE_NAME ("hwsleep")
|
||||||
@ -148,11 +146,13 @@ AcpiSetFirmwareWakingVector (
|
|||||||
|
|
||||||
if (AcpiGbl_CommonFACS.VectorWidth == 32)
|
if (AcpiGbl_CommonFACS.VectorWidth == 32)
|
||||||
{
|
{
|
||||||
*(UINT32 *) AcpiGbl_CommonFACS.FirmwareWakingVector = (UINT32) PhysicalAddress;
|
*(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector))
|
||||||
|
= (UINT32) PhysicalAddress;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*AcpiGbl_CommonFACS.FirmwareWakingVector = PhysicalAddress;
|
*AcpiGbl_CommonFACS.FirmwareWakingVector
|
||||||
|
= PhysicalAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
@ -190,11 +190,13 @@ AcpiGetFirmwareWakingVector (
|
|||||||
|
|
||||||
if (AcpiGbl_CommonFACS.VectorWidth == 32)
|
if (AcpiGbl_CommonFACS.VectorWidth == 32)
|
||||||
{
|
{
|
||||||
*PhysicalAddress = *(UINT32 *) AcpiGbl_CommonFACS.FirmwareWakingVector;
|
*PhysicalAddress = (ACPI_PHYSICAL_ADDRESS)
|
||||||
|
*(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*PhysicalAddress = *AcpiGbl_CommonFACS.FirmwareWakingVector;
|
*PhysicalAddress =
|
||||||
|
*AcpiGbl_CommonFACS.FirmwareWakingVector;
|
||||||
}
|
}
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
@ -231,7 +233,7 @@ AcpiEnterSleepStatePrep (
|
|||||||
/*
|
/*
|
||||||
* _PSW methods could be run here to enable wake-on keyboard, LAN, etc.
|
* _PSW methods could be run here to enable wake-on keyboard, LAN, etc.
|
||||||
*/
|
*/
|
||||||
Status = AcpiHwGetSleepTypeData (SleepState,
|
Status = AcpiGetSleepTypeData (SleepState,
|
||||||
&AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB);
|
&AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
@ -281,11 +283,13 @@ ACPI_STATUS
|
|||||||
AcpiEnterSleepState (
|
AcpiEnterSleepState (
|
||||||
UINT8 SleepState)
|
UINT8 SleepState)
|
||||||
{
|
{
|
||||||
UINT16 PM1AControl;
|
UINT32 PM1AControl;
|
||||||
UINT16 PM1BControl;
|
UINT32 PM1BControl;
|
||||||
ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
|
ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
|
||||||
ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo;
|
ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo;
|
||||||
|
UINT32 InValue;
|
||||||
UINT32 Retry;
|
UINT32 Retry;
|
||||||
|
ACPI_STATUS Status;
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE ("AcpiEnterSleepState");
|
ACPI_FUNCTION_TRACE ("AcpiEnterSleepState");
|
||||||
@ -294,7 +298,7 @@ AcpiEnterSleepState (
|
|||||||
if ((AcpiGbl_SleepTypeA > ACPI_SLEEP_TYPE_MAX) ||
|
if ((AcpiGbl_SleepTypeA > ACPI_SLEEP_TYPE_MAX) ||
|
||||||
(AcpiGbl_SleepTypeB > ACPI_SLEEP_TYPE_MAX))
|
(AcpiGbl_SleepTypeB > ACPI_SLEEP_TYPE_MAX))
|
||||||
{
|
{
|
||||||
ACPI_REPORT_ERROR (("Sleep values out of range: A=%x B=%x\n",
|
ACPI_REPORT_ERROR (("Sleep values out of range: A=%X B=%X\n",
|
||||||
AcpiGbl_SleepTypeA, AcpiGbl_SleepTypeB));
|
AcpiGbl_SleepTypeA, AcpiGbl_SleepTypeB));
|
||||||
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||||
}
|
}
|
||||||
@ -305,16 +309,39 @@ AcpiEnterSleepState (
|
|||||||
|
|
||||||
/* Clear wake status */
|
/* Clear wake status */
|
||||||
|
|
||||||
AcpiHwBitRegisterWrite (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
Status = AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
||||||
AcpiHwClearAcpiStatus();
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
/* TBD: Disable arbitration here? */
|
Status = AcpiHwClearAcpiStatus();
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
AcpiHwDisableNonWakeupGpes();
|
/* Disable BM arbitration */
|
||||||
|
|
||||||
|
Status = AcpiSetRegister (ACPI_BITREG_ARB_DISABLE, 1, ACPI_MTX_LOCK);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = AcpiHwDisableNonWakeupGpes();
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
/* Get current value of PM1A control */
|
/* Get current value of PM1A control */
|
||||||
|
|
||||||
PM1AControl = (UINT16) AcpiHwRegisterRead (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL);
|
Status = AcpiHwRegisterRead (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL, &PM1AControl);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Entering S%d\n", SleepState));
|
ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Entering S%d\n", SleepState));
|
||||||
|
|
||||||
/* Clear SLP_EN and SLP_TYP fields */
|
/* Clear SLP_EN and SLP_TYP fields */
|
||||||
@ -329,8 +356,17 @@ AcpiEnterSleepState (
|
|||||||
|
|
||||||
/* Write #1: fill in SLP_TYP data */
|
/* Write #1: fill in SLP_TYP data */
|
||||||
|
|
||||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl);
|
Status = AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl);
|
||||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl);
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
/* Insert SLP_ENABLE bit */
|
/* Insert SLP_ENABLE bit */
|
||||||
|
|
||||||
@ -338,36 +374,63 @@ AcpiEnterSleepState (
|
|||||||
PM1BControl |= SleepEnableRegInfo->AccessBitMask;
|
PM1BControl |= SleepEnableRegInfo->AccessBitMask;
|
||||||
|
|
||||||
/* Write #2: SLP_TYP + SLP_EN */
|
/* Write #2: SLP_TYP + SLP_EN */
|
||||||
ACPI_FLUSH_CPU_CACHE();
|
|
||||||
|
|
||||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl);
|
ACPI_FLUSH_CPU_CACHE ();
|
||||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl);
|
|
||||||
|
Status = AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wait a second, then try again. This is to get S4/5 to work on all machines.
|
* Wait a second, then try again. This is to get S4/5 to work on all machines.
|
||||||
*/
|
*/
|
||||||
if (SleepState > ACPI_STATE_S3)
|
if (SleepState > ACPI_STATE_S3)
|
||||||
{
|
{
|
||||||
AcpiOsStall (1000000);
|
/*
|
||||||
|
* We wait so long to allow chipsets that poll this reg very slowly to
|
||||||
|
* still read the right value. Ideally, this entire block would go
|
||||||
|
* away entirely.
|
||||||
|
*/
|
||||||
|
AcpiOsStall (10000000);
|
||||||
|
|
||||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL,
|
Status = AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL,
|
||||||
SleepEnableRegInfo->AccessBitMask);
|
SleepEnableRegInfo->AccessBitMask);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wait until we enter sleep state */
|
/* Wait until we enter sleep state */
|
||||||
|
|
||||||
/* Spin until we wake */
|
|
||||||
Retry = 1000;
|
Retry = 1000;
|
||||||
while (!AcpiHwBitRegisterRead (ACPI_BITREG_WAKE_STATUS, ACPI_MTX_LOCK))
|
do
|
||||||
{
|
{
|
||||||
/*
|
Status = AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &InValue, ACPI_MTX_LOCK);
|
||||||
* Some BIOSes don't set WAK_STS at all,
|
if (ACPI_FAILURE (Status))
|
||||||
* give up waiting for wakeup if we time out.
|
{
|
||||||
*/
|
return_ACPI_STATUS (Status);
|
||||||
if (Retry-- == 0) {
|
}
|
||||||
break; /* giving up */
|
|
||||||
}
|
/*
|
||||||
}
|
* Some BIOSes don't set WAK_STS at all,
|
||||||
|
* give up waiting for wakeup if we time out.
|
||||||
|
*/
|
||||||
|
if (Retry-- == 0) {
|
||||||
|
break; /* giving up */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Spin until we wake */
|
||||||
|
|
||||||
|
} while (!InValue);
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
@ -424,7 +487,14 @@ AcpiLeaveSleepState (
|
|||||||
|
|
||||||
/* _WAK returns stuff - do we want to look at it? */
|
/* _WAK returns stuff - do we want to look at it? */
|
||||||
|
|
||||||
AcpiHwEnableNonWakeupGpes();
|
Status = AcpiHwEnableNonWakeupGpes();
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_OK);
|
/* Disable BM arbitration */
|
||||||
|
Status = AcpiSetRegister (ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK);
|
||||||
|
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
@ -129,15 +129,13 @@
|
|||||||
#include "acdispat.h"
|
#include "acdispat.h"
|
||||||
#include "amlcode.h"
|
#include "amlcode.h"
|
||||||
#include "acnamesp.h"
|
#include "acnamesp.h"
|
||||||
#include "acdebug.h"
|
|
||||||
#include "acinterp.h"
|
#include "acinterp.h"
|
||||||
|
|
||||||
#define _COMPONENT ACPI_PARSER
|
#define _COMPONENT ACPI_PARSER
|
||||||
ACPI_MODULE_NAME ("psparse")
|
ACPI_MODULE_NAME ("psparse")
|
||||||
|
|
||||||
|
|
||||||
UINT32 AcpiGbl_Depth = 0;
|
static UINT32 AcpiGbl_Depth = 0;
|
||||||
extern UINT32 AcpiGbl_ScopeDepth;
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -267,13 +265,13 @@ AcpiPsFindObject (
|
|||||||
* PARAMETERS: WalkState - Current State
|
* PARAMETERS: WalkState - Current State
|
||||||
* Op - Op to complete
|
* Op - Op to complete
|
||||||
*
|
*
|
||||||
* RETURN: TRUE if Op and subtree was deleted
|
* RETURN: None.
|
||||||
*
|
*
|
||||||
* DESCRIPTION: Perform any cleanup at the completion of an Op.
|
* DESCRIPTION: Perform any cleanup at the completion of an Op.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
BOOLEAN
|
void
|
||||||
AcpiPsCompleteThisOp (
|
AcpiPsCompleteThisOp (
|
||||||
ACPI_WALK_STATE *WalkState,
|
ACPI_WALK_STATE *WalkState,
|
||||||
ACPI_PARSE_OBJECT *Op)
|
ACPI_PARSE_OBJECT *Op)
|
||||||
@ -292,7 +290,7 @@ AcpiPsCompleteThisOp (
|
|||||||
|
|
||||||
if (!Op)
|
if (!Op)
|
||||||
{
|
{
|
||||||
return_VALUE (TRUE);
|
return_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete this op and the subtree below it if asked to */
|
/* Delete this op and the subtree below it if asked to */
|
||||||
@ -302,13 +300,13 @@ AcpiPsCompleteThisOp (
|
|||||||
{
|
{
|
||||||
/* Make sure that we only delete this subtree */
|
/* Make sure that we only delete this subtree */
|
||||||
|
|
||||||
if (Op->Parent)
|
if (Op->Common.Parent)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Check if we need to replace the operator and its subtree
|
* Check if we need to replace the operator and its subtree
|
||||||
* with a return value op (placeholder op)
|
* with a return value op (placeholder op)
|
||||||
*/
|
*/
|
||||||
ParentInfo = AcpiPsGetOpcodeInfo (Op->Parent->Opcode);
|
ParentInfo = AcpiPsGetOpcodeInfo (Op->Common.Parent->Common.AmlOpcode);
|
||||||
|
|
||||||
switch (ParentInfo->Class)
|
switch (ParentInfo->Class)
|
||||||
{
|
{
|
||||||
@ -324,7 +322,7 @@ AcpiPsCompleteThisOp (
|
|||||||
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
||||||
if (!ReplacementOp)
|
if (!ReplacementOp)
|
||||||
{
|
{
|
||||||
return_VALUE (FALSE);
|
return_VOID;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -334,37 +332,35 @@ AcpiPsCompleteThisOp (
|
|||||||
* These opcodes contain TermArg operands. The current
|
* These opcodes contain TermArg operands. The current
|
||||||
* op must be replaced by a placeholder return op
|
* op must be replaced by a placeholder return op
|
||||||
*/
|
*/
|
||||||
if ((Op->Parent->Opcode == AML_REGION_OP) ||
|
if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) ||
|
||||||
(Op->Parent->Opcode == AML_DATA_REGION_OP) ||
|
(Op->Common.Parent->Common.AmlOpcode == AML_DATA_REGION_OP) ||
|
||||||
(Op->Parent->Opcode == AML_BUFFER_OP) ||
|
(Op->Common.Parent->Common.AmlOpcode == AML_BUFFER_OP) ||
|
||||||
(Op->Parent->Opcode == AML_PACKAGE_OP) ||
|
(Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) ||
|
||||||
(Op->Parent->Opcode == AML_VAR_PACKAGE_OP))
|
(Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))
|
||||||
{
|
{
|
||||||
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
||||||
if (!ReplacementOp)
|
if (!ReplacementOp)
|
||||||
{
|
{
|
||||||
return_VALUE (FALSE);
|
return_VOID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Op->Parent->Opcode == AML_NAME_OP) &&
|
if ((Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) &&
|
||||||
(WalkState->DescendingCallback != AcpiDsExecBeginOp))
|
(WalkState->DescendingCallback != AcpiDsExecBeginOp))
|
||||||
|
|
||||||
{
|
{
|
||||||
if ((Op->Opcode == AML_BUFFER_OP) ||
|
if ((Op->Common.AmlOpcode == AML_BUFFER_OP) ||
|
||||||
(Op->Opcode == AML_PACKAGE_OP) ||
|
(Op->Common.AmlOpcode == AML_PACKAGE_OP) ||
|
||||||
(Op->Opcode == AML_VAR_PACKAGE_OP))
|
(Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP))
|
||||||
{
|
{
|
||||||
ReplacementOp = AcpiPsAllocOp (Op->Opcode);
|
ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode);
|
||||||
if (!ReplacementOp)
|
if (!ReplacementOp)
|
||||||
{
|
{
|
||||||
return_VALUE (FALSE);
|
return_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
((ACPI_PARSE2_OBJECT *) ReplacementOp)->Data =
|
ReplacementOp->Named.Data = Op->Named.Data;
|
||||||
((ACPI_PARSE2_OBJECT *) Op)->Data;
|
ReplacementOp->Named.Length = Op->Named.Length;
|
||||||
((ACPI_PARSE2_OBJECT *) ReplacementOp)->Length =
|
|
||||||
((ACPI_PARSE2_OBJECT *) Op)->Length;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -373,28 +369,28 @@ AcpiPsCompleteThisOp (
|
|||||||
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
||||||
if (!ReplacementOp)
|
if (!ReplacementOp)
|
||||||
{
|
{
|
||||||
return_VALUE (FALSE);
|
return_VOID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We must unlink this op from the parent tree */
|
/* We must unlink this op from the parent tree */
|
||||||
|
|
||||||
Prev = Op->Parent->Value.Arg;
|
Prev = Op->Common.Parent->Common.Value.Arg;
|
||||||
if (Prev == Op)
|
if (Prev == Op)
|
||||||
{
|
{
|
||||||
/* This op is the first in the list */
|
/* This op is the first in the list */
|
||||||
|
|
||||||
if (ReplacementOp)
|
if (ReplacementOp)
|
||||||
{
|
{
|
||||||
ReplacementOp->Parent = Op->Parent;
|
ReplacementOp->Common.Parent = Op->Common.Parent;
|
||||||
ReplacementOp->Value.Arg = NULL;
|
ReplacementOp->Common.Value.Arg = NULL;
|
||||||
ReplacementOp->Node = Op->Node;
|
ReplacementOp->Common.Node = Op->Common.Node;
|
||||||
Op->Parent->Value.Arg = ReplacementOp;
|
Op->Common.Parent->Common.Value.Arg = ReplacementOp;
|
||||||
ReplacementOp->Next = Op->Next;
|
ReplacementOp->Common.Next = Op->Common.Next;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Op->Parent->Value.Arg = Op->Next;
|
Op->Common.Parent->Common.Value.Arg = Op->Common.Next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,21 +400,21 @@ AcpiPsCompleteThisOp (
|
|||||||
{
|
{
|
||||||
/* Traverse all siblings in the parent's argument list */
|
/* Traverse all siblings in the parent's argument list */
|
||||||
|
|
||||||
Next = Prev->Next;
|
Next = Prev->Common.Next;
|
||||||
if (Next == Op)
|
if (Next == Op)
|
||||||
{
|
{
|
||||||
if (ReplacementOp)
|
if (ReplacementOp)
|
||||||
{
|
{
|
||||||
ReplacementOp->Parent = Op->Parent;
|
ReplacementOp->Common.Parent = Op->Common.Parent;
|
||||||
ReplacementOp->Value.Arg = NULL;
|
ReplacementOp->Common.Value.Arg = NULL;
|
||||||
ReplacementOp->Node = Op->Node;
|
ReplacementOp->Common.Node = Op->Common.Node;
|
||||||
Prev->Next = ReplacementOp;
|
Prev->Common.Next = ReplacementOp;
|
||||||
ReplacementOp->Next = Op->Next;
|
ReplacementOp->Common.Next = Op->Common.Next;
|
||||||
Next = NULL;
|
Next = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Prev->Next = Op->Next;
|
Prev->Common.Next = Op->Common.Next;
|
||||||
Next = NULL;
|
Next = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -431,13 +427,13 @@ AcpiPsCompleteThisOp (
|
|||||||
|
|
||||||
AcpiPsDeleteParseTree (Op);
|
AcpiPsDeleteParseTree (Op);
|
||||||
|
|
||||||
return_VALUE (TRUE);
|
return_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
return_VALUE (FALSE);
|
return_VOID;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
return (FALSE);
|
return;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -537,7 +533,7 @@ AcpiPsNextParseState (
|
|||||||
Status = AE_CTRL_TRANSFER;
|
Status = AE_CTRL_TRANSFER;
|
||||||
WalkState->PrevOp = Op;
|
WalkState->PrevOp = Op;
|
||||||
WalkState->MethodCallOp = Op;
|
WalkState->MethodCallOp = Op;
|
||||||
WalkState->MethodCallNode = (Op->Value.Arg)->Node;
|
WalkState->MethodCallNode = (Op->Common.Value.Arg)->Common.Node;
|
||||||
|
|
||||||
/* Will return value (if any) be used by the caller? */
|
/* Will return value (if any) be used by the caller? */
|
||||||
|
|
||||||
@ -585,6 +581,11 @@ AcpiPsParseLoop (
|
|||||||
|
|
||||||
ACPI_FUNCTION_TRACE_PTR ("PsParseLoop", WalkState);
|
ACPI_FUNCTION_TRACE_PTR ("PsParseLoop", WalkState);
|
||||||
|
|
||||||
|
if (WalkState->DescendingCallback == NULL)
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ParserState = &WalkState->ParserState;
|
ParserState = &WalkState->ParserState;
|
||||||
WalkState->ArgTypes = 0;
|
WalkState->ArgTypes = 0;
|
||||||
@ -601,8 +602,8 @@ AcpiPsParseLoop (
|
|||||||
* was just completed
|
* was just completed
|
||||||
*/
|
*/
|
||||||
if ((ParserState->Scope->ParseScope.Op) &&
|
if ((ParserState->Scope->ParseScope.Op) &&
|
||||||
((ParserState->Scope->ParseScope.Op->Opcode == AML_IF_OP) ||
|
((ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_IF_OP) ||
|
||||||
(ParserState->Scope->ParseScope.Op->Opcode == AML_WHILE_OP)) &&
|
(ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_WHILE_OP)) &&
|
||||||
(WalkState->ControlState) &&
|
(WalkState->ControlState) &&
|
||||||
(WalkState->ControlState->Common.State ==
|
(WalkState->ControlState->Common.State ==
|
||||||
ACPI_CONTROL_PREDICATE_EXECUTING))
|
ACPI_CONTROL_PREDICATE_EXECUTING))
|
||||||
@ -649,13 +650,13 @@ AcpiPsParseLoop (
|
|||||||
*/
|
*/
|
||||||
while ((ParserState->Aml < ParserState->AmlEnd) || (Op))
|
while ((ParserState->Aml < ParserState->AmlEnd) || (Op))
|
||||||
{
|
{
|
||||||
|
AmlOpStart = ParserState->Aml;
|
||||||
if (!Op)
|
if (!Op)
|
||||||
{
|
{
|
||||||
/* Get the next opcode from the AML stream */
|
/* Get the next opcode from the AML stream */
|
||||||
|
|
||||||
AmlOpStart = ParserState->Aml;
|
WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, ParserState->AmlStart);
|
||||||
WalkState->AmlOffset = ParserState->Aml - ParserState->AmlStart;
|
WalkState->Opcode = AcpiPsPeekOpcode (ParserState);
|
||||||
WalkState->Opcode = AcpiPsPeekOpcode (ParserState);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First cut to determine what we have found:
|
* First cut to determine what we have found:
|
||||||
@ -704,8 +705,8 @@ AcpiPsParseLoop (
|
|||||||
|
|
||||||
if (WalkState->OpInfo->Flags & AML_NAMED)
|
if (WalkState->OpInfo->Flags & AML_NAMED)
|
||||||
{
|
{
|
||||||
PreOp.Value.Arg = NULL;
|
PreOp.Common.Value.Arg = NULL;
|
||||||
PreOp.Opcode = WalkState->Opcode;
|
PreOp.Common.AmlOpcode = WalkState->Opcode;
|
||||||
|
|
||||||
while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)
|
while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)
|
||||||
{
|
{
|
||||||
@ -720,44 +721,41 @@ AcpiPsParseLoop (
|
|||||||
|
|
||||||
INCREMENT_ARG_LIST (WalkState->ArgTypes);
|
INCREMENT_ARG_LIST (WalkState->ArgTypes);
|
||||||
|
|
||||||
if (WalkState->DescendingCallback != NULL)
|
/*
|
||||||
|
* Find the object. This will either insert the object into
|
||||||
|
* the namespace or simply look it up
|
||||||
|
*/
|
||||||
|
WalkState->Op = NULL;
|
||||||
|
|
||||||
|
Status = WalkState->DescendingCallback (WalkState, &Op);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
/*
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "During name lookup/catalog, %s\n",
|
||||||
* Find the object. This will either insert the object into
|
AcpiFormatException (Status)));
|
||||||
* the namespace or simply look it up
|
goto CloseThisOp;
|
||||||
*/
|
|
||||||
WalkState->Op = NULL;
|
|
||||||
|
|
||||||
Status = WalkState->DescendingCallback (WalkState, &Op);
|
|
||||||
if (ACPI_FAILURE (Status))
|
|
||||||
{
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "During name lookup/catalog, %s\n",
|
|
||||||
AcpiFormatException (Status)));
|
|
||||||
goto CloseThisOp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Op == NULL)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
|
||||||
if (Status == AE_CTRL_PENDING)
|
|
||||||
{
|
|
||||||
Status = AE_OK;
|
|
||||||
goto CloseThisOp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ACPI_FAILURE (Status))
|
|
||||||
{
|
|
||||||
goto CloseThisOp;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AcpiPsAppendArg (Op, PreOp.Value.Arg);
|
if (Op == NULL)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||||
|
if (Status == AE_CTRL_PENDING)
|
||||||
|
{
|
||||||
|
Status = AE_OK;
|
||||||
|
goto CloseThisOp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
goto CloseThisOp;
|
||||||
|
}
|
||||||
|
|
||||||
|
AcpiPsAppendArg (Op, PreOp.Common.Value.Arg);
|
||||||
AcpiGbl_Depth++;
|
AcpiGbl_Depth++;
|
||||||
|
|
||||||
if (Op->Opcode == AML_REGION_OP)
|
if (Op->Common.AmlOpcode == AML_REGION_OP)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Defer final parsing of an OperationRegion body,
|
* Defer final parsing of an OperationRegion body,
|
||||||
@ -771,8 +769,8 @@ AcpiPsParseLoop (
|
|||||||
*
|
*
|
||||||
* (Length is unknown until parse of the body complete)
|
* (Length is unknown until parse of the body complete)
|
||||||
*/
|
*/
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = AmlOpStart;
|
Op->Named.Data = AmlOpStart;
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = 0;
|
Op->Named.Length = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -792,8 +790,8 @@ AcpiPsParseLoop (
|
|||||||
* Backup to beginning of CreateXXXfield declaration
|
* Backup to beginning of CreateXXXfield declaration
|
||||||
* BodyLength is unknown until we parse the body
|
* BodyLength is unknown until we parse the body
|
||||||
*/
|
*/
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = AmlOpStart;
|
Op->Named.Data = AmlOpStart;
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = 0;
|
Op->Named.Length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
AcpiPsAppendArg (AcpiPsGetParentScope (ParserState), Op);
|
AcpiPsAppendArg (AcpiPsGetParentScope (ParserState), Op);
|
||||||
@ -821,13 +819,14 @@ AcpiPsParseLoop (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Op->AmlOffset = WalkState->AmlOffset;
|
Op->Common.AmlOffset = WalkState->AmlOffset;
|
||||||
|
|
||||||
if (WalkState->OpInfo)
|
if (WalkState->OpInfo)
|
||||||
{
|
{
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||||
"Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n",
|
"Opcode %4.4hX [%s] Op %p Aml %p AmlOffset %5.5X\n",
|
||||||
Op->Opcode, WalkState->OpInfo->Name, Op, ParserState->Aml, Op->AmlOffset));
|
Op->Common.AmlOpcode, WalkState->OpInfo->Name,
|
||||||
|
Op, ParserState->Aml, Op->Common.AmlOffset));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -840,7 +839,7 @@ AcpiPsParseLoop (
|
|||||||
{
|
{
|
||||||
/* Get arguments */
|
/* Get arguments */
|
||||||
|
|
||||||
switch (Op->Opcode)
|
switch (Op->Common.AmlOpcode)
|
||||||
{
|
{
|
||||||
case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
|
case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
|
||||||
case AML_WORD_OP: /* AML_WORDDATA_ARG */
|
case AML_WORD_OP: /* AML_WORDDATA_ARG */
|
||||||
@ -867,20 +866,21 @@ AcpiPsParseLoop (
|
|||||||
|
|
||||||
while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount)
|
while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount)
|
||||||
{
|
{
|
||||||
WalkState->AmlOffset = ParserState->Aml - ParserState->AmlStart;
|
WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml,
|
||||||
|
ParserState->AmlStart);
|
||||||
Arg = AcpiPsGetNextArg (ParserState,
|
Arg = AcpiPsGetNextArg (ParserState,
|
||||||
GET_CURRENT_ARG_TYPE (WalkState->ArgTypes),
|
GET_CURRENT_ARG_TYPE (WalkState->ArgTypes),
|
||||||
&WalkState->ArgCount);
|
&WalkState->ArgCount);
|
||||||
if (Arg)
|
if (Arg)
|
||||||
{
|
{
|
||||||
Arg->AmlOffset = WalkState->AmlOffset;
|
Arg->Common.AmlOffset = WalkState->AmlOffset;
|
||||||
AcpiPsAppendArg (Op, Arg);
|
AcpiPsAppendArg (Op, Arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
INCREMENT_ARG_LIST (WalkState->ArgTypes);
|
INCREMENT_ARG_LIST (WalkState->ArgTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Op->Opcode)
|
switch (Op->Common.AmlOpcode)
|
||||||
{
|
{
|
||||||
case AML_METHOD_OP:
|
case AML_METHOD_OP:
|
||||||
|
|
||||||
@ -891,9 +891,8 @@ AcpiPsParseLoop (
|
|||||||
* because we don't have enough info in the first pass
|
* because we don't have enough info in the first pass
|
||||||
* to parse them correctly.
|
* to parse them correctly.
|
||||||
*/
|
*/
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = ParserState->Aml;
|
Op->Named.Data = ParserState->Aml;
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->PkgEnd -
|
Op->Named.Length = (UINT32) (ParserState->PkgEnd - ParserState->Aml);
|
||||||
ParserState->Aml);
|
|
||||||
/*
|
/*
|
||||||
* Skip body of method. For OpRegions, we must continue
|
* Skip body of method. For OpRegions, we must continue
|
||||||
* parsing because the opregion is not a standalone
|
* parsing because the opregion is not a standalone
|
||||||
@ -907,8 +906,8 @@ AcpiPsParseLoop (
|
|||||||
case AML_PACKAGE_OP:
|
case AML_PACKAGE_OP:
|
||||||
case AML_VAR_PACKAGE_OP:
|
case AML_VAR_PACKAGE_OP:
|
||||||
|
|
||||||
if ((Op->Parent) &&
|
if ((Op->Common.Parent) &&
|
||||||
(Op->Parent->Opcode == AML_NAME_OP) &&
|
(Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) &&
|
||||||
(WalkState->DescendingCallback != AcpiDsExecBeginOp))
|
(WalkState->DescendingCallback != AcpiDsExecBeginOp))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -916,9 +915,8 @@ AcpiPsParseLoop (
|
|||||||
* because we don't have enough info in the first pass
|
* because we don't have enough info in the first pass
|
||||||
* to parse them correctly.
|
* to parse them correctly.
|
||||||
*/
|
*/
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = AmlOpStart;
|
Op->Named.Data = AmlOpStart;
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->PkgEnd -
|
Op->Named.Length = (UINT32) (ParserState->PkgEnd - AmlOpStart);
|
||||||
AmlOpStart);
|
|
||||||
/*
|
/*
|
||||||
* Skip body
|
* Skip body
|
||||||
*/
|
*/
|
||||||
@ -934,6 +932,10 @@ AcpiPsParseLoop (
|
|||||||
WalkState->ControlState->Control.PackageEnd = ParserState->PkgEnd;
|
WalkState->ControlState->Control.PackageEnd = ParserState->PkgEnd;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* No action for all other opcodes */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -945,14 +947,18 @@ AcpiPsParseLoop (
|
|||||||
{
|
{
|
||||||
/* There are arguments (complex ones), push Op and prepare for argument */
|
/* There are arguments (complex ones), push Op and prepare for argument */
|
||||||
|
|
||||||
AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount);
|
Status = AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
Op = NULL;
|
Op = NULL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* All arguments have been processed -- Op is complete, prepare for next */
|
/* All arguments have been processed -- Op is complete, prepare for next */
|
||||||
|
|
||||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
if (WalkState->OpInfo->Flags & AML_NAMED)
|
if (WalkState->OpInfo->Flags & AML_NAMED)
|
||||||
{
|
{
|
||||||
if (AcpiGbl_Depth)
|
if (AcpiGbl_Depth)
|
||||||
@ -960,7 +966,7 @@ AcpiPsParseLoop (
|
|||||||
AcpiGbl_Depth--;
|
AcpiGbl_Depth--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Op->Opcode == AML_REGION_OP)
|
if (Op->Common.AmlOpcode == AML_REGION_OP)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Skip parsing of control method or opregion body,
|
* Skip parsing of control method or opregion body,
|
||||||
@ -970,8 +976,7 @@ AcpiPsParseLoop (
|
|||||||
* Completed parsing an OpRegion declaration, we now
|
* Completed parsing an OpRegion declaration, we now
|
||||||
* know the length.
|
* know the length.
|
||||||
*/
|
*/
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml -
|
Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data);
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -983,8 +988,7 @@ AcpiPsParseLoop (
|
|||||||
*
|
*
|
||||||
* BodyLength is unknown until we parse the body
|
* BodyLength is unknown until we parse the body
|
||||||
*/
|
*/
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml -
|
Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data);
|
||||||
((ACPI_PARSE2_OBJECT * ) Op)->Data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This op complete, notify the dispatcher */
|
/* This op complete, notify the dispatcher */
|
||||||
@ -992,7 +996,7 @@ AcpiPsParseLoop (
|
|||||||
if (WalkState->AscendingCallback != NULL)
|
if (WalkState->AscendingCallback != NULL)
|
||||||
{
|
{
|
||||||
WalkState->Op = Op;
|
WalkState->Op = Op;
|
||||||
WalkState->Opcode = Op->Opcode;
|
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||||
|
|
||||||
Status = WalkState->AscendingCallback (WalkState);
|
Status = WalkState->AscendingCallback (WalkState);
|
||||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||||
@ -1010,12 +1014,10 @@ CloseThisOp:
|
|||||||
*/
|
*/
|
||||||
ParserState->Scope->ParseScope.ArgCount--;
|
ParserState->Scope->ParseScope.ArgCount--;
|
||||||
|
|
||||||
/* Close this Op (may result in parse subtree deletion) */
|
/* Close this Op (will result in parse subtree deletion) */
|
||||||
|
|
||||||
if (AcpiPsCompleteThisOp (WalkState, Op))
|
AcpiPsCompleteThisOp (WalkState, Op);
|
||||||
{
|
Op = NULL;
|
||||||
Op = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (Status)
|
switch (Status)
|
||||||
{
|
{
|
||||||
@ -1038,8 +1040,8 @@ CloseThisOp:
|
|||||||
AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
|
AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
|
||||||
|
|
||||||
WalkState->Op = Op;
|
WalkState->Op = Op;
|
||||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
WalkState->Opcode = Op->Opcode;
|
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||||
|
|
||||||
Status = WalkState->AscendingCallback (WalkState);
|
Status = WalkState->AscendingCallback (WalkState);
|
||||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||||
@ -1055,7 +1057,7 @@ CloseThisOp:
|
|||||||
|
|
||||||
/* Pop off scopes until we find the While */
|
/* Pop off scopes until we find the While */
|
||||||
|
|
||||||
while (!Op || (Op->Opcode != AML_WHILE_OP))
|
while (!Op || (Op->Common.AmlOpcode != AML_WHILE_OP))
|
||||||
{
|
{
|
||||||
AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
|
AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
|
||||||
}
|
}
|
||||||
@ -1063,8 +1065,8 @@ CloseThisOp:
|
|||||||
/* Close this iteration of the While loop */
|
/* Close this iteration of the While loop */
|
||||||
|
|
||||||
WalkState->Op = Op;
|
WalkState->Op = Op;
|
||||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
WalkState->Opcode = Op->Opcode;
|
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||||
|
|
||||||
Status = WalkState->AscendingCallback (WalkState);
|
Status = WalkState->AscendingCallback (WalkState);
|
||||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||||
@ -1150,8 +1152,8 @@ CloseThisOp:
|
|||||||
if (WalkState->AscendingCallback != NULL)
|
if (WalkState->AscendingCallback != NULL)
|
||||||
{
|
{
|
||||||
WalkState->Op = Op;
|
WalkState->Op = Op;
|
||||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||||
WalkState->Opcode = Op->Opcode;
|
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||||
|
|
||||||
Status = WalkState->AscendingCallback (WalkState);
|
Status = WalkState->AscendingCallback (WalkState);
|
||||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||||
@ -1315,7 +1317,14 @@ AcpiPsParseAml (
|
|||||||
*/
|
*/
|
||||||
if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE)
|
if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE)
|
||||||
{
|
{
|
||||||
AcpiDsTerminateControlMethod (WalkState);
|
Status = AcpiDsTerminateControlMethod (WalkState);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
ACPI_REPORT_ERROR (("Could not terminate control method properly\n"));
|
||||||
|
Status = AE_OK;
|
||||||
|
|
||||||
|
/* Ignore error and continue */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete this walk state and all linked control states */
|
/* Delete this walk state and all linked control states */
|
||||||
@ -1339,8 +1348,11 @@ AcpiPsParseAml (
|
|||||||
* If the method return value is not used by the parent,
|
* If the method return value is not used by the parent,
|
||||||
* The object is deleted
|
* The object is deleted
|
||||||
*/
|
*/
|
||||||
AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc);
|
Status = AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc);
|
||||||
WalkState->WalkType |= ACPI_WALK_METHOD_RESTART;
|
if (ACPI_SUCCESS (Status))
|
||||||
|
{
|
||||||
|
WalkState->WalkType |= ACPI_WALK_METHOD_RESTART;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1388,7 +1400,7 @@ AcpiPsParseAml (
|
|||||||
|
|
||||||
AcpiUtRemoveReference (EffectiveReturnDesc);
|
AcpiUtRemoveReference (EffectiveReturnDesc);
|
||||||
AcpiExReleaseAllMutexes (Thread);
|
AcpiExReleaseAllMutexes (Thread);
|
||||||
AcpiUtDeleteGenericState ((ACPI_GENERIC_STATE *) Thread);
|
AcpiUtDeleteGenericState (ACPI_CAST_PTR (ACPI_GENERIC_STATE, Thread));
|
||||||
AcpiGbl_CurrentWalkList = PrevWalkList;
|
AcpiGbl_CurrentWalkList = PrevWalkList;
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
@ -172,11 +172,11 @@ AcpiRsCreateResourceList (
|
|||||||
* Pass the ByteStreamBuffer into a module that can calculate
|
* Pass the ByteStreamBuffer into a module that can calculate
|
||||||
* the buffer size needed for the linked list
|
* the buffer size needed for the linked list
|
||||||
*/
|
*/
|
||||||
Status = AcpiRsCalculateListLength (ByteStreamStart, ByteStreamBufferLength,
|
Status = AcpiRsGetListLength (ByteStreamStart, ByteStreamBufferLength,
|
||||||
&ListSizeNeeded);
|
&ListSizeNeeded);
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Status=%X ListSizeNeeded=%X\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Status=%X ListSizeNeeded=%X\n",
|
||||||
Status, ListSizeNeeded));
|
Status, (UINT32) ListSizeNeeded));
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
@ -200,7 +200,7 @@ AcpiRsCreateResourceList (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n",
|
||||||
OutputBuffer->Pointer, OutputBuffer->Length));
|
OutputBuffer->Pointer, (UINT32) OutputBuffer->Length));
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,14 +253,14 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
/*
|
/*
|
||||||
* Get the required buffer length
|
* Get the required buffer length
|
||||||
*/
|
*/
|
||||||
Status = AcpiRsCalculatePciRoutingTableLength (PackageObject,
|
Status = AcpiRsGetPciRoutingTableLength (PackageObject,
|
||||||
&BufferSizeNeeded);
|
&BufferSizeNeeded);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", BufferSizeNeeded));
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", (UINT32) BufferSizeNeeded));
|
||||||
|
|
||||||
/* Validate/Allocate/Clear caller buffer */
|
/* Validate/Allocate/Clear caller buffer */
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
TopObjectList = PackageObject->Package.Elements;
|
TopObjectList = PackageObject->Package.Elements;
|
||||||
NumberOfElements = PackageObject->Package.Count;
|
NumberOfElements = PackageObject->Package.Count;
|
||||||
Buffer = OutputBuffer->Pointer;
|
Buffer = OutputBuffer->Pointer;
|
||||||
UserPrt = (ACPI_PCI_ROUTING_TABLE *) Buffer;
|
UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer);
|
||||||
|
|
||||||
for (Index = 0; Index < NumberOfElements; Index++)
|
for (Index = 0; Index < NumberOfElements; Index++)
|
||||||
{
|
{
|
||||||
@ -288,7 +288,7 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
* be zero because we cleared the return buffer earlier
|
* be zero because we cleared the return buffer earlier
|
||||||
*/
|
*/
|
||||||
Buffer += UserPrt->Length;
|
Buffer += UserPrt->Length;
|
||||||
UserPrt = (ACPI_PCI_ROUTING_TABLE *) Buffer;
|
UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill in the Length field with the information we have at this point.
|
* Fill in the Length field with the information we have at this point.
|
||||||
@ -311,14 +311,14 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
/*
|
/*
|
||||||
* 1) First subobject: Dereference the Address
|
* 1) First subobject: Dereference the Address
|
||||||
*/
|
*/
|
||||||
if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type)
|
if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
|
||||||
{
|
{
|
||||||
UserPrt->Address = (*SubObjectList)->Integer.Value;
|
UserPrt->Address = (*SubObjectList)->Integer.Value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||||
return_ACPI_STATUS (AE_BAD_DATA);
|
return_ACPI_STATUS (AE_BAD_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,14 +327,14 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
*/
|
*/
|
||||||
SubObjectList++;
|
SubObjectList++;
|
||||||
|
|
||||||
if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type)
|
if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
|
||||||
{
|
{
|
||||||
UserPrt->Pin = (UINT32) (*SubObjectList)->Integer.Value;
|
UserPrt->Pin = (UINT32) (*SubObjectList)->Integer.Value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||||
return_ACPI_STATUS (AE_BAD_DATA);
|
return_ACPI_STATUS (AE_BAD_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
*/
|
*/
|
||||||
SubObjectList++;
|
SubObjectList++;
|
||||||
|
|
||||||
switch ((*SubObjectList)->Common.Type)
|
switch (ACPI_GET_OBJECT_TYPE (*SubObjectList))
|
||||||
{
|
{
|
||||||
case INTERNAL_TYPE_REFERENCE:
|
case INTERNAL_TYPE_REFERENCE:
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
(UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer);
|
(UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer);
|
||||||
PathBuffer.Pointer = UserPrt->Source;
|
PathBuffer.Pointer = UserPrt->Source;
|
||||||
|
|
||||||
Status = AcpiNsHandleToPathname ((ACPI_HANDLE *) Node, &PathBuffer);
|
Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer);
|
||||||
|
|
||||||
UserPrt->Length += ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */
|
UserPrt->Length += ACPI_STRLEN (UserPrt->Source) + 1; /* include null terminator */
|
||||||
break;
|
break;
|
||||||
@ -393,7 +393,7 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||||
return_ACPI_STATUS (AE_BAD_DATA);
|
return_ACPI_STATUS (AE_BAD_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,14 +406,14 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
*/
|
*/
|
||||||
SubObjectList++;
|
SubObjectList++;
|
||||||
|
|
||||||
if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type)
|
if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
|
||||||
{
|
{
|
||||||
UserPrt->SourceIndex = (UINT32) (*SubObjectList)->Integer.Value;
|
UserPrt->SourceIndex = (UINT32) (*SubObjectList)->Integer.Value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||||
return_ACPI_STATUS (AE_BAD_DATA);
|
return_ACPI_STATUS (AE_BAD_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,7 +423,7 @@ AcpiRsCreatePciRoutingTable (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n",
|
||||||
OutputBuffer->Pointer, OutputBuffer->Length));
|
OutputBuffer->Pointer, (UINT32) OutputBuffer->Length));
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,11 +466,11 @@ AcpiRsCreateByteStream (
|
|||||||
* Pass the LinkedListBuffer into a module that calculates
|
* Pass the LinkedListBuffer into a module that calculates
|
||||||
* the buffer size needed for the byte stream.
|
* the buffer size needed for the byte stream.
|
||||||
*/
|
*/
|
||||||
Status = AcpiRsCalculateByteStreamLength (LinkedListBuffer,
|
Status = AcpiRsGetByteStreamLength (LinkedListBuffer,
|
||||||
&ByteStreamSizeNeeded);
|
&ByteStreamSizeNeeded);
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamSizeNeeded=%X, %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamSizeNeeded=%X, %s\n",
|
||||||
ByteStreamSizeNeeded, AcpiFormatException (Status)));
|
(UINT32) ByteStreamSizeNeeded, AcpiFormatException (Status)));
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
@ -494,7 +494,7 @@ AcpiRsCreateByteStream (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n",
|
||||||
OutputBuffer->Pointer, OutputBuffer->Length));
|
OutputBuffer->Pointer, (UINT32) OutputBuffer->Length));
|
||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +124,128 @@
|
|||||||
ACPI_MODULE_NAME ("tbget")
|
ACPI_MODULE_NAME ("tbget")
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: AcpiTbTableOverride
|
||||||
|
*
|
||||||
|
* PARAMETERS: *TableInfo - Info for current table
|
||||||
|
*
|
||||||
|
* RETURN: None
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Attempts override of current table with a new one if provided
|
||||||
|
* by the host OS.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
void
|
||||||
|
AcpiTbTableOverride (
|
||||||
|
ACPI_TABLE_DESC *TableInfo)
|
||||||
|
{
|
||||||
|
ACPI_TABLE_HEADER *NewTable;
|
||||||
|
ACPI_STATUS Status;
|
||||||
|
ACPI_POINTER Address;
|
||||||
|
ACPI_TABLE_DESC NewTableInfo;
|
||||||
|
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE ("AcpiTbTableOverride");
|
||||||
|
|
||||||
|
|
||||||
|
Status = AcpiOsTableOverride (TableInfo->Pointer, &NewTable);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
/* Some severe error from the OSL, but we basically ignore it */
|
||||||
|
|
||||||
|
ACPI_REPORT_ERROR (("Could not override ACPI table, %s\n",
|
||||||
|
AcpiFormatException (Status)));
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!NewTable)
|
||||||
|
{
|
||||||
|
/* No table override */
|
||||||
|
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We have a new table to override the old one. Get a copy of
|
||||||
|
* the new one. We know that the new table has a logical pointer.
|
||||||
|
*/
|
||||||
|
Address.PointerType = ACPI_LOGICAL_POINTER;
|
||||||
|
Address.Pointer.Logical = NewTable;
|
||||||
|
|
||||||
|
Status = AcpiTbGetTable (&Address, &NewTableInfo);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
ACPI_REPORT_ERROR (("Could not copy ACPI table override\n"));
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Delete the original table
|
||||||
|
*/
|
||||||
|
AcpiTbDeleteSingleTable (TableInfo);
|
||||||
|
|
||||||
|
/* Copy the table info */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Successful table override [%4.4s]\n",
|
||||||
|
((ACPI_TABLE_HEADER *) NewTableInfo.Pointer)->Signature));
|
||||||
|
|
||||||
|
ACPI_MEMCPY (TableInfo, &NewTableInfo, sizeof (ACPI_TABLE_DESC));
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: AcpiTbGetTableWithOverride
|
||||||
|
*
|
||||||
|
* PARAMETERS: Address - Physical or logical address of table
|
||||||
|
* *TableInfo - Where the table info is returned
|
||||||
|
*
|
||||||
|
* RETURN: Status
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Gets and installs the table with possible table override by OS.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiTbGetTableWithOverride (
|
||||||
|
ACPI_POINTER *Address,
|
||||||
|
ACPI_TABLE_DESC *TableInfo)
|
||||||
|
{
|
||||||
|
ACPI_STATUS Status;
|
||||||
|
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE ("AcpiTbGetTableWithOverride");
|
||||||
|
|
||||||
|
|
||||||
|
Status = AcpiTbGetTable (Address, TableInfo);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
ACPI_REPORT_ERROR (("Could not get ACPI table, %s\n",
|
||||||
|
AcpiFormatException (Status)));
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Attempt override. It either happens or it doesn't, no status
|
||||||
|
*/
|
||||||
|
AcpiTbTableOverride (TableInfo);
|
||||||
|
|
||||||
|
/* Install the table */
|
||||||
|
|
||||||
|
Status = AcpiTbInstallTable (TableInfo);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
ACPI_REPORT_ERROR (("Could not install ACPI table, %s\n",
|
||||||
|
AcpiFormatException (Status)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return_ACPI_STATUS (Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiTbGetTablePtr
|
* FUNCTION: AcpiTbGetTablePtr
|
||||||
@ -209,10 +331,8 @@ AcpiTbGetTablePtr (
|
|||||||
*
|
*
|
||||||
* FUNCTION: AcpiTbGetTable
|
* FUNCTION: AcpiTbGetTable
|
||||||
*
|
*
|
||||||
* PARAMETERS: PhysicalAddress - Physical address of table to retrieve
|
* PARAMETERS: Address - Physical address of table to retrieve
|
||||||
* *BufferPtr - If BufferPtr is valid, read data from
|
* *TableInfo - Where the table info is returned
|
||||||
* buffer rather than searching memory
|
|
||||||
* *TableInfo - Where the table info is returned
|
|
||||||
*
|
*
|
||||||
* RETURN: Status
|
* RETURN: Status
|
||||||
*
|
*
|
||||||
@ -227,7 +347,7 @@ AcpiTbGetTable (
|
|||||||
{
|
{
|
||||||
ACPI_TABLE_HEADER *TableHeader = NULL;
|
ACPI_TABLE_HEADER *TableHeader = NULL;
|
||||||
ACPI_TABLE_HEADER *FullTable = NULL;
|
ACPI_TABLE_HEADER *FullTable = NULL;
|
||||||
UINT32 Size;
|
ACPI_SIZE Size;
|
||||||
UINT8 Allocation;
|
UINT8 Allocation;
|
||||||
ACPI_STATUS Status = AE_OK;
|
ACPI_STATUS Status = AE_OK;
|
||||||
|
|
||||||
@ -259,7 +379,7 @@ AcpiTbGetTable (
|
|||||||
|
|
||||||
/* Copy the entire table (including header) to the local buffer */
|
/* Copy the entire table (including header) to the local buffer */
|
||||||
|
|
||||||
Size = TableHeader->Length;
|
Size = (ACPI_SIZE) TableHeader->Length;
|
||||||
ACPI_MEMCPY (FullTable, TableHeader, Size);
|
ACPI_MEMCPY (FullTable, TableHeader, Size);
|
||||||
|
|
||||||
/* Save allocation type */
|
/* Save allocation type */
|
||||||
@ -314,7 +434,6 @@ AcpiTbGetTable (
|
|||||||
* FUNCTION: AcpiTbGetAllTables
|
* FUNCTION: AcpiTbGetAllTables
|
||||||
*
|
*
|
||||||
* PARAMETERS: NumberOfTables - Number of tables to get
|
* PARAMETERS: NumberOfTables - Number of tables to get
|
||||||
* TablePtr - Input buffer pointer, optional
|
|
||||||
*
|
*
|
||||||
* RETURN: Status
|
* RETURN: Status
|
||||||
*
|
*
|
||||||
@ -331,8 +450,7 @@ AcpiTbGetTable (
|
|||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AcpiTbGetAllTables (
|
AcpiTbGetAllTables (
|
||||||
UINT32 NumberOfTables,
|
UINT32 NumberOfTables)
|
||||||
ACPI_TABLE_HEADER *TablePtr)
|
|
||||||
{
|
{
|
||||||
ACPI_STATUS Status = AE_OK;
|
ACPI_STATUS Status = AE_OK;
|
||||||
UINT32 Index;
|
UINT32 Index;
|
||||||
@ -371,7 +489,7 @@ AcpiTbGetAllTables (
|
|||||||
|
|
||||||
/* Recognize and install the table */
|
/* Recognize and install the table */
|
||||||
|
|
||||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
Status = AcpiTbInstallTable (&TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -379,11 +497,17 @@ AcpiTbGetAllTables (
|
|||||||
* error. Just get as many tables as we can, later we will
|
* error. Just get as many tables as we can, later we will
|
||||||
* determine if there are enough tables to continue.
|
* determine if there are enough tables to continue.
|
||||||
*/
|
*/
|
||||||
AcpiTbUninstallTable (&TableInfo);
|
(void) AcpiTbUninstallTable (&TableInfo);
|
||||||
Status = AE_OK;
|
Status = AE_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!AcpiGbl_FADT)
|
||||||
|
{
|
||||||
|
ACPI_REPORT_ERROR (("No FADT present in R/XSDT\n"));
|
||||||
|
return_ACPI_STATUS (AE_NO_ACPI_TABLES);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert the FADT to a common format. This allows earlier revisions of the
|
* Convert the FADT to a common format. This allows earlier revisions of the
|
||||||
* table to coexist with newer versions, using common access code.
|
* table to coexist with newer versions, using common access code.
|
||||||
@ -405,16 +529,18 @@ AcpiTbGetAllTables (
|
|||||||
Status = AcpiTbGetTable (&Address, &TableInfo);
|
Status = AcpiTbGetTable (&Address, &TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
ACPI_REPORT_ERROR (("Could not get the FACS\n"));
|
ACPI_REPORT_ERROR (("Could not get the FACS, %s\n",
|
||||||
|
AcpiFormatException (Status)));
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Install the FACS */
|
/* Install the FACS */
|
||||||
|
|
||||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
Status = AcpiTbInstallTable (&TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
ACPI_REPORT_ERROR (("Could not install the FACS\n"));
|
ACPI_REPORT_ERROR (("Could not install the FACS, %s\n",
|
||||||
|
AcpiFormatException (Status)));
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -425,42 +551,31 @@ AcpiTbGetAllTables (
|
|||||||
Status = AcpiTbBuildCommonFacs (&TableInfo);
|
Status = AcpiTbBuildCommonFacs (&TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
ACPI_REPORT_ERROR (("Could not convert FACS to common internal format\n"));
|
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the DSDT (We know that the FADT is valid now)
|
* Get/install the DSDT (We know that the FADT is valid now)
|
||||||
*/
|
*/
|
||||||
Address.PointerType = AcpiGbl_TableFlags;
|
Address.PointerType = AcpiGbl_TableFlags;
|
||||||
Address.Pointer.Value = ACPI_GET_ADDRESS (AcpiGbl_FADT->XDsdt);
|
Address.Pointer.Value = ACPI_GET_ADDRESS (AcpiGbl_FADT->XDsdt);
|
||||||
if (AcpiGbl_DSDT != NULL)
|
|
||||||
{
|
|
||||||
Address.PointerType = ACPI_LOGICAL_POINTER;
|
|
||||||
Address.Pointer.Value = ACPI_GET_ADDRESS ((NATIVE_UINT)AcpiGbl_DSDT);
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = AcpiTbGetTable (&Address, &TableInfo);
|
Status = AcpiTbGetTableWithOverride (&Address, &TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
ACPI_REPORT_ERROR (("Could not get the DSDT\n"));
|
ACPI_REPORT_ERROR (("Could not get the DSDT\n"));
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Install the DSDT */
|
/* Set Integer Width (32/64) based upon DSDT revision */
|
||||||
|
|
||||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
AcpiUtSetIntegerWidth (AcpiGbl_DSDT->Revision);
|
||||||
if (ACPI_FAILURE (Status))
|
|
||||||
{
|
|
||||||
ACPI_REPORT_ERROR (("Could not install the DSDT\n"));
|
|
||||||
return_ACPI_STATUS (Status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dump the entire DSDT */
|
/* Dump the entire DSDT */
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES,
|
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES,
|
||||||
"Hex dump of entire DSDT, size %d (0x%X)\n",
|
"Hex dump of entire DSDT, size %d (0x%X), Integer width = %d\n",
|
||||||
AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length));
|
AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length, AcpiGbl_IntegerBitWidth));
|
||||||
ACPI_DUMP_BUFFER ((UINT8 *) AcpiGbl_DSDT, AcpiGbl_DSDT->Length);
|
ACPI_DUMP_BUFFER ((UINT8 *) AcpiGbl_DSDT, AcpiGbl_DSDT->Length);
|
||||||
|
|
||||||
/* Always delete the RSDP mapping, we are done with it */
|
/* Always delete the RSDP mapping, we are done with it */
|
||||||
@ -549,7 +664,7 @@ AcpiTbVerifyRsdp (
|
|||||||
|
|
||||||
/* The RSDP supplied is OK */
|
/* The RSDP supplied is OK */
|
||||||
|
|
||||||
TableInfo.Pointer = (ACPI_TABLE_HEADER *) Rsdp;
|
TableInfo.Pointer = ACPI_CAST_PTR (ACPI_TABLE_HEADER, Rsdp);
|
||||||
TableInfo.Length = sizeof (RSDP_DESCRIPTOR);
|
TableInfo.Length = sizeof (RSDP_DESCRIPTOR);
|
||||||
TableInfo.Allocation = ACPI_MEM_MAPPED;
|
TableInfo.Allocation = ACPI_MEM_MAPPED;
|
||||||
TableInfo.BasePointer = Rsdp;
|
TableInfo.BasePointer = Rsdp;
|
||||||
@ -564,7 +679,7 @@ AcpiTbVerifyRsdp (
|
|||||||
|
|
||||||
/* Save the RSDP in a global for easy access */
|
/* Save the RSDP in a global for easy access */
|
||||||
|
|
||||||
AcpiGbl_RSDP = (RSDP_DESCRIPTOR *) TableInfo.Pointer;
|
AcpiGbl_RSDP = ACPI_CAST_PTR (RSDP_DESCRIPTOR, TableInfo.Pointer);
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
|
|
||||||
|
|
||||||
@ -633,7 +748,7 @@ ACPI_STATUS
|
|||||||
AcpiTbValidateRsdt (
|
AcpiTbValidateRsdt (
|
||||||
ACPI_TABLE_HEADER *TablePtr)
|
ACPI_TABLE_HEADER *TablePtr)
|
||||||
{
|
{
|
||||||
UINT32 NoMatch;
|
int NoMatch;
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_NAME ("TbValidateRsdt");
|
ACPI_FUNCTION_NAME ("TbValidateRsdt");
|
||||||
@ -663,8 +778,9 @@ AcpiTbValidateRsdt (
|
|||||||
ACPI_DUMP_BUFFER (AcpiGbl_RSDP, 20);
|
ACPI_DUMP_BUFFER (AcpiGbl_RSDP, 20);
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR,
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR,
|
||||||
"RSDT/XSDT signature at %X is invalid\n",
|
"RSDT/XSDT signature at %X (%p) is invalid\n",
|
||||||
AcpiGbl_RSDP->RsdtPhysicalAddress));
|
AcpiGbl_RSDP->RsdtPhysicalAddress,
|
||||||
|
(void *) (NATIVE_UINT) AcpiGbl_RSDP->RsdtPhysicalAddress));
|
||||||
|
|
||||||
return (AE_BAD_SIGNATURE);
|
return (AE_BAD_SIGNATURE);
|
||||||
}
|
}
|
||||||
@ -691,7 +807,7 @@ ACPI_STATUS
|
|||||||
AcpiTbGetTablePointer (
|
AcpiTbGetTablePointer (
|
||||||
ACPI_POINTER *Address,
|
ACPI_POINTER *Address,
|
||||||
UINT32 Flags,
|
UINT32 Flags,
|
||||||
UINT32 *Size,
|
ACPI_SIZE *Size,
|
||||||
ACPI_TABLE_HEADER **TablePtr)
|
ACPI_TABLE_HEADER **TablePtr)
|
||||||
{
|
{
|
||||||
ACPI_STATUS Status = AE_OK;
|
ACPI_STATUS Status = AE_OK;
|
||||||
@ -720,6 +836,9 @@ AcpiTbGetTablePointer (
|
|||||||
*TablePtr = Address->Pointer.Logical;
|
*TablePtr = Address->Pointer.Logical;
|
||||||
*Size = 0;
|
*Size = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return (AE_BAD_PARAMETER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -737,6 +856,9 @@ AcpiTbGetTablePointer (
|
|||||||
|
|
||||||
Status = AE_BAD_PARAMETER;
|
Status = AE_BAD_PARAMETER;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return (AE_BAD_PARAMETER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -768,27 +890,23 @@ AcpiTbGetTableRsdt (
|
|||||||
ACPI_FUNCTION_TRACE ("TbGetTableRsdt");
|
ACPI_FUNCTION_TRACE ("TbGetTableRsdt");
|
||||||
|
|
||||||
|
|
||||||
/*
|
/* Get the RSDT/XSDT from the RSDP */
|
||||||
* Get the RSDT from the RSDP
|
|
||||||
*/
|
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
|
|
||||||
"RSDP located at %p, RSDT physical=%8.8X%8.8X \n",
|
|
||||||
AcpiGbl_RSDP,
|
|
||||||
ACPI_HIDWORD (AcpiGbl_RSDP->RsdtPhysicalAddress),
|
|
||||||
ACPI_LODWORD (AcpiGbl_RSDP->RsdtPhysicalAddress)));
|
|
||||||
|
|
||||||
|
|
||||||
/* Get the RSDT/XSDT */
|
|
||||||
|
|
||||||
AcpiTbGetRsdtAddress (&Address);
|
AcpiTbGetRsdtAddress (&Address);
|
||||||
Status = AcpiTbGetTable (&Address, &TableInfo);
|
Status = AcpiTbGetTable (&Address, &TableInfo);
|
||||||
if (ACPI_FAILURE (Status))
|
if (ACPI_FAILURE (Status))
|
||||||
{
|
{
|
||||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not get the RSDT, %s\n",
|
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not get the R/XSDT, %s\n",
|
||||||
AcpiFormatException (Status)));
|
AcpiFormatException (Status)));
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)));
|
||||||
|
|
||||||
/* Check the RSDT or XSDT signature */
|
/* Check the RSDT or XSDT signature */
|
||||||
|
|
||||||
Status = AcpiTbValidateRsdt (TableInfo.Pointer);
|
Status = AcpiTbValidateRsdt (TableInfo.Pointer);
|
||||||
|
@ -118,11 +118,7 @@
|
|||||||
#define DEFINE_ACPI_GLOBALS
|
#define DEFINE_ACPI_GLOBALS
|
||||||
|
|
||||||
#include "acpi.h"
|
#include "acpi.h"
|
||||||
#include "acevents.h"
|
|
||||||
#include "acnamesp.h"
|
#include "acnamesp.h"
|
||||||
#include "acinterp.h"
|
|
||||||
#include "amlcode.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define _COMPONENT ACPI_UTILITIES
|
#define _COMPONENT ACPI_UTILITIES
|
||||||
ACPI_MODULE_NAME ("utglobal")
|
ACPI_MODULE_NAME ("utglobal")
|
||||||
@ -245,7 +241,6 @@ UINT32 AcpiGbl_NestingLevel = 0;
|
|||||||
BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
|
BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
|
||||||
BOOLEAN AcpiGbl_MethodExecuting = FALSE;
|
BOOLEAN AcpiGbl_MethodExecuting = FALSE;
|
||||||
NATIVE_CHAR *AcpiGbl_DbDisasmIndent = "....";
|
NATIVE_CHAR *AcpiGbl_DbDisasmIndent = "....";
|
||||||
ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr = NULL;
|
|
||||||
|
|
||||||
/* System flags */
|
/* System flags */
|
||||||
|
|
||||||
@ -282,15 +277,15 @@ const NATIVE_CHAR *AcpiGbl_DbSleepStates[ACPI_NUM_SLEEP_STATES] = {
|
|||||||
|
|
||||||
const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
|
const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
|
||||||
{
|
{
|
||||||
{"_GPE", INTERNAL_TYPE_DEF_ANY},
|
{"_GPE", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||||
{"_PR_", INTERNAL_TYPE_DEF_ANY},
|
{"_PR_", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||||
{"_SB_", ACPI_TYPE_DEVICE},
|
{"_SB_", ACPI_TYPE_DEVICE, NULL},
|
||||||
{"_SI_", INTERNAL_TYPE_DEF_ANY},
|
{"_SI_", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||||
{"_TZ_", INTERNAL_TYPE_DEF_ANY},
|
{"_TZ_", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||||
{"_REV", ACPI_TYPE_INTEGER, "2"},
|
{"_REV", ACPI_TYPE_INTEGER, "2"},
|
||||||
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
|
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
|
||||||
{"_GL_", ACPI_TYPE_MUTEX, "0"},
|
{"_GL_", ACPI_TYPE_MUTEX, "0"},
|
||||||
{NULL, ACPI_TYPE_ANY} /* Table terminator */
|
{NULL, ACPI_TYPE_ANY, NULL} /* Table terminator */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -345,9 +340,9 @@ const UINT8 AcpiGbl_NsProperties[] =
|
|||||||
|
|
||||||
/* Hex to ASCII conversion table */
|
/* Hex to ASCII conversion table */
|
||||||
|
|
||||||
const NATIVE_CHAR AcpiGbl_HexToAscii[] =
|
static const NATIVE_CHAR AcpiGbl_HexToAscii[] =
|
||||||
{'0','1','2','3','4','5','6','7',
|
{'0','1','2','3','4','5','6','7',
|
||||||
'8','9','A','B','C','D','E','F'};
|
'8','9','A','B','C','D','E','F'};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
@ -363,7 +358,7 @@ const NATIVE_CHAR AcpiGbl_HexToAscii[] =
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
UINT8
|
char
|
||||||
AcpiUtHexToAsciiChar (
|
AcpiUtHexToAsciiChar (
|
||||||
ACPI_INTEGER Integer,
|
ACPI_INTEGER Integer,
|
||||||
UINT32 Position)
|
UINT32 Position)
|
||||||
@ -463,7 +458,7 @@ ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
|
|||||||
|
|
||||||
/* Region type decoding */
|
/* Region type decoding */
|
||||||
|
|
||||||
const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
|
static const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
|
||||||
{
|
{
|
||||||
"SystemMemory",
|
"SystemMemory",
|
||||||
"SystemIO",
|
"SystemIO",
|
||||||
@ -509,7 +504,7 @@ AcpiUtGetRegionName (
|
|||||||
|
|
||||||
/* Event type decoding */
|
/* Event type decoding */
|
||||||
|
|
||||||
const NATIVE_CHAR *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
|
static const NATIVE_CHAR *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
|
||||||
{
|
{
|
||||||
"PM_Timer",
|
"PM_Timer",
|
||||||
"GlobalLock",
|
"GlobalLock",
|
||||||
@ -533,7 +528,7 @@ AcpiUtGetEventName (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef ACPI_DEBUG
|
#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Strings and procedures used for debug only
|
* Strings and procedures used for debug only
|
||||||
@ -566,6 +561,8 @@ AcpiUtGetMutexName (
|
|||||||
return (AcpiGbl_MutexNames[MutexId]);
|
return (AcpiGbl_MutexNames[MutexId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
@ -647,16 +644,35 @@ AcpiUtGetTypeName (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NATIVE_CHAR *
|
||||||
|
AcpiUtGetObjectTypeName (
|
||||||
|
ACPI_OPERAND_OBJECT *ObjDesc)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!ObjDesc)
|
||||||
|
{
|
||||||
|
return ("[NULL Object Descriptor]");
|
||||||
|
}
|
||||||
|
|
||||||
|
return (AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (ObjDesc)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Various strings for future use */
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#include "amlcode.h"
|
||||||
|
|
||||||
/* Data used in keeping track of fields */
|
/* Data used in keeping track of fields */
|
||||||
|
|
||||||
const NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] =
|
static const NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] =
|
||||||
{
|
{
|
||||||
"skip",
|
"skip",
|
||||||
"?access?"
|
"?access?"
|
||||||
}; /* FE = Field Element */
|
}; /* FE = Field Element */
|
||||||
|
|
||||||
|
|
||||||
const NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] =
|
static const NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] =
|
||||||
{
|
{
|
||||||
"Error",
|
"Error",
|
||||||
"MTR",
|
"MTR",
|
||||||
@ -670,7 +686,7 @@ const NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] =
|
|||||||
|
|
||||||
/* Access type decoding */
|
/* Access type decoding */
|
||||||
|
|
||||||
const NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] =
|
static const NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] =
|
||||||
{
|
{
|
||||||
"AnyAcc",
|
"AnyAcc",
|
||||||
"ByteAcc",
|
"ByteAcc",
|
||||||
@ -683,14 +699,13 @@ const NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] =
|
|||||||
|
|
||||||
/* Update rule decoding */
|
/* Update rule decoding */
|
||||||
|
|
||||||
const NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] =
|
static const NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] =
|
||||||
{
|
{
|
||||||
"Preserve",
|
"Preserve",
|
||||||
"WriteAsOnes",
|
"WriteAsOnes",
|
||||||
"WriteAsZeros"
|
"WriteAsZeros"
|
||||||
};
|
};
|
||||||
|
#endif /* Future use */
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -772,6 +787,9 @@ AcpiUtAllocateOwnerId (
|
|||||||
AcpiGbl_NextMethodOwnerId = ACPI_FIRST_METHOD_ID;
|
AcpiGbl_NextMethodOwnerId = ACPI_FIRST_METHOD_ID;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
|
(void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
|
||||||
@ -804,15 +822,15 @@ AcpiUtInitGlobals (
|
|||||||
ACPI_MEMSET (AcpiGbl_MemoryLists, 0, sizeof (ACPI_MEMORY_LIST) * ACPI_NUM_MEM_LISTS);
|
ACPI_MEMSET (AcpiGbl_MemoryLists, 0, sizeof (ACPI_MEMORY_LIST) * ACPI_NUM_MEM_LISTS);
|
||||||
|
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_GENERIC_STATE *) NULL)->Common.Next), NULL);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_GENERIC_STATE *) NULL)->Common.Next), NULL);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE_OBJECT *) NULL)->Next), NULL);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE_OBJECT *) NULL)->Common.Next), NULL);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE2_OBJECT *) NULL)->Next), NULL);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE_OBJECT *) NULL)->Common.Next), NULL);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_OPERAND].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_OPERAND_OBJECT *) NULL)->Cache.Next), NULL);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_OPERAND].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_OPERAND_OBJECT *) NULL)->Cache.Next), NULL);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_WALK].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_WALK_STATE *) NULL)->Next), NULL);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_WALK].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_WALK_STATE *) NULL)->Next), NULL);
|
||||||
|
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_NSNODE].ObjectSize = sizeof (ACPI_NAMESPACE_NODE);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_NSNODE].ObjectSize = sizeof (ACPI_NAMESPACE_NODE);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].ObjectSize = sizeof (ACPI_GENERIC_STATE);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_STATE].ObjectSize = sizeof (ACPI_GENERIC_STATE);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].ObjectSize = sizeof (ACPI_PARSE_OBJECT);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].ObjectSize = sizeof (ACPI_PARSE_OBJ_COMMON);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].ObjectSize = sizeof (ACPI_PARSE2_OBJECT);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].ObjectSize = sizeof (ACPI_PARSE_OBJ_NAMED);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_OPERAND].ObjectSize = sizeof (ACPI_OPERAND_OBJECT);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_OPERAND].ObjectSize = sizeof (ACPI_OPERAND_OBJECT);
|
||||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_WALK].ObjectSize = sizeof (ACPI_WALK_STATE);
|
AcpiGbl_MemoryLists[ACPI_MEM_LIST_WALK].ObjectSize = sizeof (ACPI_WALK_STATE);
|
||||||
|
|
||||||
@ -855,6 +873,7 @@ AcpiUtInitGlobals (
|
|||||||
|
|
||||||
AcpiGbl_SysNotify.Handler = NULL;
|
AcpiGbl_SysNotify.Handler = NULL;
|
||||||
AcpiGbl_DrvNotify.Handler = NULL;
|
AcpiGbl_DrvNotify.Handler = NULL;
|
||||||
|
AcpiGbl_InitHandler = NULL;
|
||||||
|
|
||||||
/* Global "typed" ACPI table pointers */
|
/* Global "typed" ACPI table pointers */
|
||||||
|
|
||||||
@ -904,7 +923,7 @@ AcpiUtInitGlobals (
|
|||||||
|
|
||||||
|
|
||||||
#ifdef ACPI_DEBUG
|
#ifdef ACPI_DEBUG
|
||||||
AcpiGbl_LowestStackPointer = ACPI_UINT32_MAX;
|
AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return_VOID;
|
return_VOID;
|
||||||
|
71
sys/dev/acpica/Osd/OsdTable.c
Normal file
71
sys/dev/acpica/Osd/OsdTable.c
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/*-
|
||||||
|
* Copyright (c) 2002 Mitsaru Iwasaki
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ACPI Table interfaces
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "acpi.h"
|
||||||
|
|
||||||
|
#include <sys/kernel.h>
|
||||||
|
#include <sys/linker.h>
|
||||||
|
|
||||||
|
#undef _COMPONENT
|
||||||
|
#define _COMPONENT ACPI_TABLES
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AcpiOsTableOverride (
|
||||||
|
ACPI_TABLE_HEADER *ExistingTable,
|
||||||
|
ACPI_TABLE_HEADER **NewTable)
|
||||||
|
{
|
||||||
|
caddr_t acpi_dsdt, p;
|
||||||
|
|
||||||
|
if (NewTable == NULL)
|
||||||
|
{
|
||||||
|
return(AE_BAD_PARAMETER);
|
||||||
|
}
|
||||||
|
|
||||||
|
(*NewTable) = NULL;
|
||||||
|
|
||||||
|
if ((acpi_dsdt = preload_search_by_type("acpi_dsdt")) == NULL)
|
||||||
|
{
|
||||||
|
return(AE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((p = preload_search_info(acpi_dsdt, MODINFO_ADDR)) == NULL)
|
||||||
|
{
|
||||||
|
return(AE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
(*NewTable) = *(void **)p;
|
||||||
|
|
||||||
|
printf("ACPI: DSDT was overridden.\n");
|
||||||
|
|
||||||
|
return(AE_OK);
|
||||||
|
}
|
||||||
|
|
@ -208,7 +208,6 @@ acpi_identify(driver_t *driver, device_t parent)
|
|||||||
{
|
{
|
||||||
device_t child;
|
device_t child;
|
||||||
int error;
|
int error;
|
||||||
caddr_t acpi_dsdt, p;
|
|
||||||
#ifdef ENABLE_DEBUGGER
|
#ifdef ENABLE_DEBUGGER
|
||||||
char *debugpoint;
|
char *debugpoint;
|
||||||
#endif
|
#endif
|
||||||
@ -260,17 +259,6 @@ acpi_identify(driver_t *driver, device_t parent)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((acpi_dsdt = preload_search_by_type("acpi_dsdt")) != NULL) {
|
|
||||||
if ((p = preload_search_info(acpi_dsdt, MODINFO_ADDR)) != NULL) {
|
|
||||||
if (ACPI_FAILURE(error = AcpiSetDsdtTablePtr(*(void **)p))) {
|
|
||||||
printf("ACPI: DSDT overriding failed: %s\n",
|
|
||||||
AcpiFormatException(error));
|
|
||||||
} else {
|
|
||||||
printf("ACPI: DSDT was overridden.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ACPI_FAILURE(error = AcpiLoadTables())) {
|
if (ACPI_FAILURE(error = AcpiLoadTables())) {
|
||||||
printf("ACPI: table load failed: %s\n", AcpiFormatException(error));
|
printf("ACPI: table load failed: %s\n", AcpiFormatException(error));
|
||||||
return_VOID;
|
return_VOID;
|
||||||
@ -1335,8 +1323,8 @@ acpi_SetSleepState(struct acpi_softc *sc, int state)
|
|||||||
case ACPI_STATE_S2:
|
case ACPI_STATE_S2:
|
||||||
case ACPI_STATE_S3:
|
case ACPI_STATE_S3:
|
||||||
case ACPI_STATE_S4:
|
case ACPI_STATE_S4:
|
||||||
if (ACPI_FAILURE(status = AcpiHwGetSleepTypeData((UINT8)state, &TypeA, &TypeB))) {
|
if (ACPI_FAILURE(status = AcpiGetSleepTypeData((UINT8)state, &TypeA, &TypeB))) {
|
||||||
device_printf(sc->acpi_dev, "AcpiHwGetSleepTypeData failed - %s\n", AcpiFormatException(status));
|
device_printf(sc->acpi_dev, "AcpiGetSleepTypeData failed - %s\n", AcpiFormatException(status));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1863,11 +1851,11 @@ static struct debugtag dbg_level[] = {
|
|||||||
{"ACPI_LV_MUTEX", ACPI_LV_MUTEX},
|
{"ACPI_LV_MUTEX", ACPI_LV_MUTEX},
|
||||||
{"ACPI_LV_INIT", ACPI_LV_INIT},
|
{"ACPI_LV_INIT", ACPI_LV_INIT},
|
||||||
{"ACPI_LV_ALL", ACPI_LV_ALL},
|
{"ACPI_LV_ALL", ACPI_LV_ALL},
|
||||||
{"ACPI_DB_AML_DISASSEMBLE", ACPI_DB_AML_DISASSEMBLE},
|
{"ACPI_LV_AML_DISASSEMBLE", ACPI_LV_AML_DISASSEMBLE},
|
||||||
{"ACPI_DB_VERBOSE_INFO", ACPI_DB_VERBOSE_INFO},
|
{"ACPI_LV_VERBOSE_INFO", ACPI_LV_VERBOSE_INFO},
|
||||||
{"ACPI_DB_FULL_TABLES", ACPI_DB_FULL_TABLES},
|
{"ACPI_LV_FULL_TABLES", ACPI_LV_FULL_TABLES},
|
||||||
{"ACPI_DB_EVENTS", ACPI_DB_EVENTS},
|
{"ACPI_LV_EVENTS", ACPI_LV_EVENTS},
|
||||||
{"ACPI_DB_VERBOSE", ACPI_DB_VERBOSE},
|
{"ACPI_LV_VERBOSE", ACPI_LV_VERBOSE},
|
||||||
{NULL, 0}
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ AcpiEnterSleepStateS4Bios (
|
|||||||
{
|
{
|
||||||
ACPI_OBJECT_LIST ArgList;
|
ACPI_OBJECT_LIST ArgList;
|
||||||
ACPI_OBJECT Arg;
|
ACPI_OBJECT Arg;
|
||||||
|
UINT32 Value;
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE ("AcpiEnterSleepStateS4Bios");
|
ACPI_FUNCTION_TRACE ("AcpiEnterSleepStateS4Bios");
|
||||||
@ -77,7 +78,7 @@ AcpiEnterSleepStateS4Bios (
|
|||||||
|
|
||||||
/* clear wake status */
|
/* clear wake status */
|
||||||
|
|
||||||
AcpiHwBitRegisterWrite (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
||||||
|
|
||||||
ACPI_DISABLE_IRQS ();
|
ACPI_DISABLE_IRQS ();
|
||||||
|
|
||||||
@ -92,8 +93,9 @@ AcpiEnterSleepStateS4Bios (
|
|||||||
{
|
{
|
||||||
AcpiOsStall(1000000);
|
AcpiOsStall(1000000);
|
||||||
AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->S4BiosReq, 8);
|
AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, AcpiGbl_FADT->S4BiosReq, 8);
|
||||||
|
AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &Value, ACPI_MTX_LOCK);
|
||||||
}
|
}
|
||||||
while (!AcpiHwBitRegisterRead (ACPI_BITREG_WAKE_STATUS, ACPI_MTX_LOCK));
|
while (!Value);
|
||||||
|
|
||||||
AcpiHwEnableNonWakeupGpes();
|
AcpiHwEnableNonWakeupGpes();
|
||||||
|
|
||||||
@ -102,42 +104,3 @@ AcpiEnterSleepStateS4Bios (
|
|||||||
return_ACPI_STATUS (AE_OK);
|
return_ACPI_STATUS (AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#undef _COMPONENT
|
|
||||||
#define _COMPONENT ACPI_TABLES
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
*
|
|
||||||
* FUNCTION: AcpiSetDsdtTablePtr
|
|
||||||
*
|
|
||||||
* PARAMETERS: TablePtr - pointer to a buffer containing the entire
|
|
||||||
* DSDT table to override
|
|
||||||
*
|
|
||||||
* RETURN: Status
|
|
||||||
*
|
|
||||||
* DESCRIPTION: Set DSDT table ptr for DSDT overriding. This function should
|
|
||||||
* be called perior than AcpiLoadTables().
|
|
||||||
*
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
ACPI_STATUS
|
|
||||||
AcpiSetDsdtTablePtr(
|
|
||||||
ACPI_TABLE_HEADER *TablePtr)
|
|
||||||
{
|
|
||||||
ACPI_FUNCTION_TRACE ("AcpiSetDsdtTablePtr");
|
|
||||||
|
|
||||||
if (!TablePtr)
|
|
||||||
{
|
|
||||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AcpiGbl_AcpiTables[ACPI_TABLE_DSDT].LoadedIntoNamespace)
|
|
||||||
{
|
|
||||||
return_ACPI_STATUS (AE_ALREADY_EXISTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
AcpiGbl_DSDT = TablePtr;
|
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ SRCS+= acpi_powerres.c acpi_resource.c acpi_thermal.c acpi_timer.c
|
|||||||
SRCS+= acpica_support.c
|
SRCS+= acpica_support.c
|
||||||
SRCS+= OsdDebug.c
|
SRCS+= OsdDebug.c
|
||||||
SRCS+= OsdHardware.c OsdInterrupt.c OsdMemory.c OsdSchedule.c
|
SRCS+= OsdHardware.c OsdInterrupt.c OsdMemory.c OsdSchedule.c
|
||||||
SRCS+= OsdStream.c OsdSynch.c OsdEnvironment.c
|
SRCS+= OsdStream.c OsdSynch.c OsdTable.c OsdEnvironment.c
|
||||||
SRCS+= opt_acpi.h opt_ddb.h
|
SRCS+= opt_acpi.h opt_ddb.h
|
||||||
SRCS+= device_if.h bus_if.h pci_if.h pcib_if.h isa_if.h
|
SRCS+= device_if.h bus_if.h pci_if.h pcib_if.h isa_if.h
|
||||||
.if ACPI_NO_SEMAPHORES
|
.if ACPI_NO_SEMAPHORES
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
#include <dev/acpica/acpiio.h>
|
#include <dev/acpica/acpiio.h>
|
||||||
|
|
||||||
#include <contrib/dev/acpica/acgcc.h>
|
#include <contrib/dev/acpica/acfreebsd.h>
|
||||||
#include <contrib/dev/acpica/actypes.h>
|
#include <contrib/dev/acpica/actypes.h>
|
||||||
|
|
||||||
#define ACPIDEV "/dev/acpi"
|
#define ACPIDEV "/dev/acpi"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user