Resolve conflicts arising from the ACPI CA 20020611 import.
This commit is contained in:
parent
8b8da579d4
commit
864900d96b
@ -30,8 +30,7 @@
|
||||
#include <machine/stdarg.h>
|
||||
#include <bootstrap.h>
|
||||
|
||||
#define COMPILER_DEPENDENT_INT64 long long
|
||||
#define COMPILER_DEPENDENT_UINT64 unsigned long long
|
||||
#include "acfreebsd.h"
|
||||
#include "actypes.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/OsdStream.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_pci.c optional adv pci
|
||||
dev/advansys/advansys.c optional adv
|
||||
|
@ -145,36 +145,36 @@
|
||||
|
||||
/* Version string */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20020403
|
||||
#define ACPI_CA_VERSION 0x20020611
|
||||
|
||||
/* Version of ACPI supported */
|
||||
|
||||
#define ACPI_CA_SUPPORT_LEVEL 2
|
||||
#define ACPI_CA_SUPPORT_LEVEL 2
|
||||
|
||||
/* Maximum objects in the various object caches */
|
||||
|
||||
#define MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */
|
||||
#define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
||||
#define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */
|
||||
#define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
|
||||
#define MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */
|
||||
#define MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */
|
||||
#define MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
||||
#define MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */
|
||||
#define MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
|
||||
#define MAX_WALK_CACHE_DEPTH 4 /* Objects for parse tree walks */
|
||||
|
||||
/* String size constants */
|
||||
|
||||
#define MAX_STRING_LENGTH 512
|
||||
#define PATHNAME_MAX 256 /* A full namespace pathname */
|
||||
#define MAX_STRING_LENGTH 512
|
||||
#define PATHNAME_MAX 256 /* A full namespace pathname */
|
||||
|
||||
/* Maximum count for a semaphore object */
|
||||
|
||||
#define MAX_SEMAPHORE_COUNT 256
|
||||
#define MAX_SEMAPHORE_COUNT 256
|
||||
|
||||
/* 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 */
|
||||
|
||||
#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
|
||||
* table checksum is incorrect?
|
||||
*/
|
||||
#define ACPI_CHECKSUM_ABORT FALSE
|
||||
#define ACPI_CHECKSUM_ABORT FALSE
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -218,54 +199,54 @@
|
||||
|
||||
/* 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
|
||||
*/
|
||||
#define MTH_NUM_LOCALS 8
|
||||
#define MTH_MAX_LOCAL 7
|
||||
#define MTH_NUM_LOCALS 8
|
||||
#define MTH_MAX_LOCAL 7
|
||||
|
||||
#define MTH_NUM_ARGS 7
|
||||
#define MTH_MAX_ARG 6
|
||||
#define MTH_NUM_ARGS 7
|
||||
#define MTH_MAX_ARG 6
|
||||
|
||||
/* 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
|
||||
*/
|
||||
#define OBJ_NUM_OPERANDS 8
|
||||
#define OBJ_MAX_OPERAND 7
|
||||
#define OBJ_NUM_OPERANDS 8
|
||||
#define OBJ_MAX_OPERAND 7
|
||||
|
||||
/* Names within the namespace are 4 bytes long */
|
||||
|
||||
#define ACPI_NAME_SIZE 4
|
||||
#define PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
|
||||
#define PATH_SEPARATOR '.'
|
||||
#define ACPI_NAME_SIZE 4
|
||||
#define PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
|
||||
#define PATH_SEPARATOR '.'
|
||||
|
||||
/* Constants used in searching for the RSDP in low memory */
|
||||
|
||||
#define LO_RSDP_WINDOW_BASE 0 /* Physical Address */
|
||||
#define HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */
|
||||
#define LO_RSDP_WINDOW_SIZE 0x400
|
||||
#define HI_RSDP_WINDOW_SIZE 0x20000
|
||||
#define RSDP_SCAN_STEP 16
|
||||
#define LO_RSDP_WINDOW_BASE 0 /* Physical Address */
|
||||
#define HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */
|
||||
#define LO_RSDP_WINDOW_SIZE 0x400
|
||||
#define HI_RSDP_WINDOW_SIZE 0x20000
|
||||
#define RSDP_SCAN_STEP 16
|
||||
|
||||
/* Operation regions */
|
||||
|
||||
#define ACPI_NUM_PREDEFINED_REGIONS 8
|
||||
#define ACPI_USER_REGION_BEGIN 0x80
|
||||
#define ACPI_NUM_PREDEFINED_REGIONS 8
|
||||
#define ACPI_USER_REGION_BEGIN 0x80
|
||||
|
||||
/* Maximum SpaceIds for Operation Regions */
|
||||
|
||||
#define ACPI_MAX_ADDRESS_SPACE 255
|
||||
#define ACPI_MAX_ADDRESS_SPACE 255
|
||||
|
||||
/* RSDP checksums */
|
||||
|
||||
#define ACPI_RSDP_CHECKSUM_LENGTH 20
|
||||
#define ACPI_RSDP_XCHECKSUM_LENGTH 36
|
||||
#define ACPI_RSDP_CHECKSUM_LENGTH 20
|
||||
#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_EXECUTE_PROMPT '%'
|
||||
#define ACPI_DEBUGGER_COMMAND_PROMPT '-'
|
||||
#define ACPI_DEBUGGER_EXECUTE_PROMPT '%'
|
||||
|
||||
|
||||
#endif /* _ACCONFIG_H */
|
||||
|
@ -256,12 +256,14 @@
|
||||
#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
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -136,20 +136,165 @@
|
||||
#include <sys/libkern.h>
|
||||
#include <machine/stdarg.h>
|
||||
|
||||
#define asm __asm
|
||||
#define __cli() disable_intr()
|
||||
#define __sti() enable_intr()
|
||||
#ifdef __i386__
|
||||
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
|
||||
#else
|
||||
#define ACPI_FLUSH_CPU_CACHE() /* XXX ia64_fc()? */
|
||||
#endif
|
||||
#ifdef __ia64__
|
||||
#define _IA64
|
||||
|
||||
/*
|
||||
* 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() /* 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
|
||||
#undef DEBUGGER_THREADING
|
||||
#endif /* DEBUGGER_THREADING */
|
||||
#define DEBUGGER_THREADING 0 /* integrated with DDB */
|
||||
#ifdef ACPI_DEBUG
|
||||
#include "opt_ddb.h"
|
||||
#ifdef DDB
|
||||
#define ENABLE_DEBUGGER
|
||||
@ -204,4 +349,15 @@ strstr(char *s, char *find)
|
||||
}
|
||||
#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__ */
|
||||
|
@ -117,168 +117,6 @@
|
||||
#ifndef __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
|
||||
* some compilers (like GCC) can catch printf format string problems.
|
||||
*/
|
||||
|
@ -162,6 +162,10 @@ ACPI_STATUS
|
||||
AcpiPurgeCachedObjects (
|
||||
void);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiInstallInitializationHandler (
|
||||
ACPI_INIT_HANDLER Handler,
|
||||
UINT32 Function);
|
||||
|
||||
/*
|
||||
* ACPI Memory manager
|
||||
@ -282,6 +286,14 @@ AcpiEvaluateObject (
|
||||
ACPI_OBJECT_LIST *ParameterObjects,
|
||||
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
|
||||
AcpiGetObjectInfo (
|
||||
ACPI_HANDLE Device,
|
||||
@ -420,6 +432,18 @@ AcpiGetIrqRoutingTable (
|
||||
* Hardware (ACPI device) interfaces
|
||||
*/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetRegister (
|
||||
UINT32 RegisterId,
|
||||
UINT32 *ReturnValue,
|
||||
UINT32 Flags);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiSetRegister (
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value,
|
||||
UINT32 Flags);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiSetFirmwareWakingVector (
|
||||
ACPI_PHYSICAL_ADDRESS PhysicalAddress);
|
||||
@ -428,17 +452,23 @@ ACPI_STATUS
|
||||
AcpiGetFirmwareWakingVector (
|
||||
ACPI_PHYSICAL_ADDRESS *PhysicalAddress);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiGetSleepTypeData (
|
||||
UINT8 SleepState,
|
||||
UINT8 *Slp_TypA,
|
||||
UINT8 *Slp_TypB);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEnterSleepStatePrep (
|
||||
UINT8 SleepState);
|
||||
UINT8 SleepState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiEnterSleepState (
|
||||
UINT8 SleepState);
|
||||
UINT8 SleepState);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiLeaveSleepState (
|
||||
UINT8 SleepState);
|
||||
UINT8 SleepState);
|
||||
|
||||
|
||||
#endif /* __ACXFACE_H__ */
|
||||
|
@ -191,6 +191,9 @@ NATIVE_CHAR *
|
||||
AcpiUtGetMutexName (
|
||||
UINT32 MutexId);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
NATIVE_CHAR *
|
||||
AcpiUtGetTypeName (
|
||||
ACPI_OBJECT_TYPE Type);
|
||||
@ -199,9 +202,6 @@ NATIVE_CHAR *
|
||||
AcpiUtGetObjectTypeName (
|
||||
ACPI_OPERAND_OBJECT *ObjDesc);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
NATIVE_CHAR *
|
||||
AcpiUtGetRegionName (
|
||||
UINT8 SpaceId);
|
||||
|
@ -131,7 +131,7 @@
|
||||
#define BLOCK_PAREN 1
|
||||
#define BLOCK_BRACE 2
|
||||
#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)
|
||||
{
|
||||
|
||||
switch (Op->Opcode)
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_METHOD_OP:
|
||||
return (BLOCK_BRACE);
|
||||
@ -191,9 +191,9 @@ AcpiPsDisplayObjectPathname (
|
||||
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] == '\\')
|
||||
{
|
||||
AcpiOsPrintf (" (Fully Qualified Pathname)");
|
||||
@ -202,7 +202,7 @@ AcpiPsDisplayObjectPathname (
|
||||
}
|
||||
else
|
||||
{
|
||||
Name = (char *) &((ACPI_PARSE2_OBJECT *) Op)->Name;
|
||||
Name = (char *) &Op->Named.Name;
|
||||
}
|
||||
|
||||
/* Search parent tree up to the root if necessary */
|
||||
@ -250,12 +250,12 @@ AcpiPsDisplayObjectPathname (
|
||||
|
||||
/* Just get the Node out of the Op object */
|
||||
|
||||
Node = Op->Node;
|
||||
Node = Op->Common.Node;
|
||||
if (!Node)
|
||||
{
|
||||
/* 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));
|
||||
|
||||
if (ACPI_FAILURE (Status))
|
||||
@ -271,7 +271,7 @@ AcpiPsDisplayObjectPathname (
|
||||
|
||||
/* Save it for next time. */
|
||||
|
||||
Op->Node = Node;
|
||||
Op->Common.Node = Node;
|
||||
}
|
||||
|
||||
/* Convert NamedDesc/handle to a full pathname */
|
||||
@ -345,12 +345,12 @@ AcpiDbDisplayOp (
|
||||
|
||||
/* 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);
|
||||
while (arg && arg != Origin)
|
||||
{
|
||||
arg = arg->Next;
|
||||
arg = arg->Common.Next;
|
||||
}
|
||||
|
||||
if (arg)
|
||||
@ -385,10 +385,10 @@ AcpiDbDisplayOp (
|
||||
|
||||
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));
|
||||
for (i = 0; i < (LastDepth - j - 1); i++)
|
||||
VERBOSE_PRINT ((DB_NO_OP_INFO, (j - 1)));
|
||||
for (i = 1; i < j; i++)
|
||||
{
|
||||
AcpiOsPrintf ("%s", AcpiGbl_DbDisasmIndent);
|
||||
}
|
||||
@ -406,7 +406,8 @@ AcpiDbDisplayOp (
|
||||
|
||||
/* 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 */
|
||||
@ -422,11 +423,11 @@ AcpiDbDisplayOp (
|
||||
|
||||
/* Resolve a name reference */
|
||||
|
||||
if ((Op->Opcode == AML_INT_NAMEPATH_OP && Op->Value.Name) &&
|
||||
(Op->Parent) &&
|
||||
if ((Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP && Op->Common.Value.Name) &&
|
||||
(Op->Common.Parent) &&
|
||||
(AcpiGbl_DbOpt_verbose))
|
||||
{
|
||||
AcpiPsDisplayObjectPathname (WalkState, Op);
|
||||
(void) AcpiPsDisplayObjectPathname (WalkState, Op);
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("\n");
|
||||
@ -561,7 +562,7 @@ AcpiDbDisplayPath (
|
||||
|
||||
/* We are only interested in named objects */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
if (!(OpInfo->Flags & AML_NSNODE))
|
||||
{
|
||||
return;
|
||||
@ -571,7 +572,7 @@ AcpiDbDisplayPath (
|
||||
{
|
||||
/* 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);
|
||||
}
|
||||
@ -581,10 +582,10 @@ AcpiDbDisplayPath (
|
||||
}
|
||||
|
||||
if ((NamePath) &&
|
||||
(NamePath->Value.String) &&
|
||||
(NamePath->Value.String[0] == '\\'))
|
||||
(NamePath->Common.Value.String) &&
|
||||
(NamePath->Common.Value.String[0] == '\\'))
|
||||
{
|
||||
AcpiDbDisplayNamestring (NamePath->Value.String);
|
||||
AcpiDbDisplayNamestring (NamePath->Common.Value.String);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -598,19 +599,19 @@ AcpiDbDisplayPath (
|
||||
Search = Op;
|
||||
for (; ;)
|
||||
{
|
||||
if (Search->Parent == Prev)
|
||||
if (Search->Common.Parent == Prev)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* Go up one level */
|
||||
|
||||
Search = Search->Parent;
|
||||
Search = Search->Common.Parent;
|
||||
}
|
||||
|
||||
if (Prev)
|
||||
{
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Search->Opcode);
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Search->Common.AmlOpcode);
|
||||
if (!(OpInfo->Flags & AML_FIELD))
|
||||
{
|
||||
/* below root scope, append scope name */
|
||||
@ -624,7 +625,7 @@ AcpiDbDisplayPath (
|
||||
|
||||
if (OpInfo->Flags & AML_CREATE)
|
||||
{
|
||||
if (Op->Opcode == AML_CREATE_FIELD_OP)
|
||||
if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)
|
||||
{
|
||||
NamePath = AcpiPsGetArg (Op, 3);
|
||||
}
|
||||
@ -634,9 +635,9 @@ AcpiDbDisplayPath (
|
||||
}
|
||||
|
||||
if ((NamePath) &&
|
||||
(NamePath->Value.String))
|
||||
(NamePath->Common.Value.String))
|
||||
{
|
||||
AcpiOsPrintf ("%4.4s", NamePath->Value.String);
|
||||
AcpiOsPrintf ("%4.4s", NamePath->Common.Value.String);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -684,21 +685,22 @@ AcpiDbDisplayOpcode (
|
||||
if (!Op)
|
||||
{
|
||||
AcpiOsPrintf ("<NULL OP PTR>");
|
||||
return;
|
||||
}
|
||||
|
||||
/* op and arguments */
|
||||
|
||||
switch (Op->Opcode)
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_BYTE_OP:
|
||||
|
||||
if (AcpiGbl_DbOpt_verbose)
|
||||
{
|
||||
AcpiOsPrintf ("(UINT8) 0x%2.2X", Op->Value.Integer8);
|
||||
AcpiOsPrintf ("(UINT8) 0x%2.2hX", Op->Common.Value.Integer8);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("0x%2.2X", Op->Value.Integer8);
|
||||
AcpiOsPrintf ("0x%2.2hX", Op->Common.Value.Integer8);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -707,11 +709,11 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
if (AcpiGbl_DbOpt_verbose)
|
||||
{
|
||||
AcpiOsPrintf ("(UINT16) 0x%4.4X", Op->Value.Integer16);
|
||||
AcpiOsPrintf ("(UINT16) 0x%4.4hX", Op->Common.Value.Integer16);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("0x%4.4X", Op->Value.Integer16);
|
||||
AcpiOsPrintf ("0x%4.4hX", Op->Common.Value.Integer16);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -720,11 +722,11 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
if (AcpiGbl_DbOpt_verbose)
|
||||
{
|
||||
AcpiOsPrintf ("(UINT32) 0x%8.8X", Op->Value.Integer32);
|
||||
AcpiOsPrintf ("(UINT32) 0x%8.8X", Op->Common.Value.Integer32);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("0x%8.8X", Op->Value.Integer32);
|
||||
AcpiOsPrintf ("0x%8.8X", Op->Common.Value.Integer32);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -733,22 +735,22 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
if (AcpiGbl_DbOpt_verbose)
|
||||
{
|
||||
AcpiOsPrintf ("(UINT64) 0x%8.8X%8.8X", Op->Value.Integer64.Hi,
|
||||
Op->Value.Integer64.Lo);
|
||||
AcpiOsPrintf ("(UINT64) 0x%8.8X%8.8X", Op->Common.Value.Integer64.Hi,
|
||||
Op->Common.Value.Integer64.Lo);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X", Op->Value.Integer64.Hi,
|
||||
Op->Value.Integer64.Lo);
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X", Op->Common.Value.Integer64.Hi,
|
||||
Op->Common.Value.Integer64.Lo);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
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
|
||||
{
|
||||
@ -759,9 +761,9 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
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
|
||||
{
|
||||
@ -772,25 +774,25 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
case AML_INT_NAMEPATH_OP:
|
||||
|
||||
AcpiDbDisplayNamestring (Op->Value.Name);
|
||||
AcpiDbDisplayNamestring (Op->Common.Value.Name);
|
||||
break;
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
@ -798,14 +800,14 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
if (AcpiGbl_DbOpt_verbose)
|
||||
{
|
||||
AcpiOsPrintf ("ByteList (Length 0x%8.8X) ", Op->Value.Integer32);
|
||||
AcpiOsPrintf ("ByteList (Length 0x%8.8X) ", Op->Common.Value.Integer32);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiOsPrintf ("0x%2.2X", Op->Value.Integer32);
|
||||
AcpiOsPrintf ("0x%2.2X", Op->Common.Value.Integer32);
|
||||
|
||||
ByteCount = Op->Value.Integer32;
|
||||
ByteData = ((ACPI_PARSE2_OBJECT *) Op)->Data;
|
||||
ByteCount = Op->Common.Value.Integer32;
|
||||
ByteData = Op->Named.Data;
|
||||
|
||||
for (i = 0; i < ByteCount; i++)
|
||||
{
|
||||
@ -819,12 +821,13 @@ AcpiDbDisplayOpcode (
|
||||
|
||||
/* Just get the opcode name and print it */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
AcpiOsPrintf ("%s", OpInfo->Name);
|
||||
|
||||
|
||||
#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->Results.NumResults))
|
||||
{
|
||||
@ -838,7 +841,7 @@ AcpiDbDisplayOpcode (
|
||||
{
|
||||
/* If there is another element in the list, add a comma */
|
||||
|
||||
if (Op->Next)
|
||||
if (Op->Common.Next)
|
||||
{
|
||||
AcpiOsPrintf (",");
|
||||
}
|
||||
@ -847,15 +850,15 @@ AcpiDbDisplayOpcode (
|
||||
/*
|
||||
* 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))
|
||||
{
|
||||
Name = AcpiPsGetName (Op);
|
||||
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 "acdebug.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acparser.h"
|
||||
#include "acevents.h"
|
||||
#include "actables.h"
|
||||
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
@ -139,7 +137,6 @@ FILE *AcpiGbl_DebugFile = NULL;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiDbMatchArgument
|
||||
@ -262,7 +259,7 @@ AcpiDbOpenDebugFile (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
static ACPI_STATUS
|
||||
AcpiDbLoadTable(
|
||||
FILE *fp,
|
||||
ACPI_TABLE_HEADER **TablePtr,
|
||||
@ -387,7 +384,7 @@ AeLocalLoadTable (
|
||||
|
||||
TableInfo.Pointer = TablePtr;
|
||||
|
||||
Status = AcpiTbInstallTable (NULL, &TableInfo);
|
||||
Status = AcpiTbInstallTable (&TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/* Free table allocated by AcpiTbGetTable */
|
||||
@ -481,7 +478,7 @@ AcpiDbLoadAcpiTable (
|
||||
if (Status == AE_ALREADY_EXISTS)
|
||||
{
|
||||
AcpiOsPrintf ("Table %4.4s is already installed\n",
|
||||
&AcpiGbl_DbTablePtr->Signature);
|
||||
AcpiGbl_DbTablePtr->Signature);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -493,7 +490,7 @@ AcpiDbLoadAcpiTable (
|
||||
}
|
||||
|
||||
AcpiOsPrintf ("%4.4s at %p successfully installed and loaded\n",
|
||||
&AcpiGbl_DbTablePtr->Signature, AcpiGbl_DbTablePtr);
|
||||
AcpiGbl_DbTablePtr->Signature, AcpiGbl_DbTablePtr);
|
||||
|
||||
AcpiGbl_AcpiHardwarePresent = FALSE;
|
||||
|
||||
|
@ -120,8 +120,6 @@
|
||||
#include "acpi.h"
|
||||
#include "acinterp.h"
|
||||
#include "amlcode.h"
|
||||
#include "acnamesp.h"
|
||||
#include "achware.h"
|
||||
#include "acevents.h"
|
||||
#include "acdispat.h"
|
||||
|
||||
@ -159,10 +157,12 @@ AcpiExSetupRegion (
|
||||
|
||||
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",
|
||||
RgnDesc->Common.Type, AcpiUtGetTypeName (RgnDesc->Common.Type)));
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n",
|
||||
ACPI_GET_OBJECT_TYPE (RgnDesc),
|
||||
AcpiUtGetObjectTypeName (RgnDesc)));
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
@ -197,8 +197,8 @@ AcpiExSetupRegion (
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
|
||||
"Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)\n",
|
||||
(char *) &ObjDesc->CommonField.Node->Name, ObjDesc->CommonField.AccessByteWidth,
|
||||
(char *) &RgnDesc->Region.Node->Name, RgnDesc->Region.Length));
|
||||
ObjDesc->CommonField.Node->Name.Ascii, ObjDesc->CommonField.AccessByteWidth,
|
||||
RgnDesc->Region.Node->Name.Ascii, RgnDesc->Region.Length));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -207,9 +207,9 @@ AcpiExSetupRegion (
|
||||
*/
|
||||
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",
|
||||
(char *) &ObjDesc->CommonField.Node->Name, ObjDesc->CommonField.BaseByteOffset,
|
||||
ObjDesc->CommonField.Node->Name.Ascii, ObjDesc->CommonField.BaseByteOffset,
|
||||
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);
|
||||
}
|
||||
@ -339,7 +339,7 @@ AcpiExRegisterOverflow (
|
||||
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
|
||||
@ -407,7 +407,7 @@ AcpiExFieldDatumIo (
|
||||
* 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
|
||||
*/
|
||||
switch (ObjDesc->Common.Type)
|
||||
switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
|
||||
{
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
/*
|
||||
@ -455,7 +455,7 @@ AcpiExFieldDatumIo (
|
||||
/* Ensure that the BankValue is not beyond the capacity of the register */
|
||||
|
||||
if (AcpiExRegisterOverflow (ObjDesc->BankField.BankObj,
|
||||
ObjDesc->BankField.Value))
|
||||
(ACPI_INTEGER) ObjDesc->BankField.Value))
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
||||
}
|
||||
@ -477,7 +477,7 @@ AcpiExFieldDatumIo (
|
||||
* RegionField case and write the datum to the Operation Region
|
||||
*/
|
||||
|
||||
/* No break; ! */
|
||||
/*lint -fallthrough */
|
||||
|
||||
|
||||
case INTERNAL_TYPE_REGION_FIELD:
|
||||
@ -502,7 +502,7 @@ AcpiExFieldDatumIo (
|
||||
/* Ensure that the IndexValue is not beyond the capacity of the register */
|
||||
|
||||
if (AcpiExRegisterOverflow (ObjDesc->IndexField.IndexObj,
|
||||
ObjDesc->IndexField.Value))
|
||||
(ACPI_INTEGER) ObjDesc->IndexField.Value))
|
||||
{
|
||||
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
|
||||
}
|
||||
@ -537,7 +537,7 @@ AcpiExFieldDatumIo (
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p, Wrong object type - %s\n",
|
||||
ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type)));
|
||||
ObjDesc, AcpiUtGetObjectTypeName (ObjDesc)));
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
}
|
||||
@ -594,7 +594,7 @@ AcpiExWriteWithUpdateRule (
|
||||
|
||||
/* 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 */
|
||||
|
||||
@ -634,7 +634,7 @@ AcpiExWriteWithUpdateRule (
|
||||
|
||||
default:
|
||||
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)));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||
}
|
||||
@ -705,6 +705,10 @@ AcpiExGetBufferDatum(
|
||||
|
||||
ACPI_MOVE_UNALIGNED64_TO_64 (Datum, &(((UINT64 *) Buffer) [Offset]));
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Should not get here */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -758,6 +762,10 @@ AcpiExSetBufferDatum (
|
||||
|
||||
ACPI_MOVE_UNALIGNED64_TO_64 (&(((UINT64 *) Buffer)[Offset]), &MergedDatum);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Should not get here */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -813,7 +821,7 @@ AcpiExExtractFromField (
|
||||
ObjDesc->CommonField.AccessByteWidth);
|
||||
|
||||
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));
|
||||
|
||||
/*
|
||||
@ -1002,7 +1010,7 @@ AcpiExInsertIntoField (
|
||||
DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength, ObjDesc->CommonField.AccessByteWidth);
|
||||
|
||||
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));
|
||||
|
||||
/*
|
||||
|
@ -119,8 +119,6 @@
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acinterp.h"
|
||||
#include "acnamesp.h"
|
||||
#include "achware.h"
|
||||
#include "acevents.h"
|
||||
|
||||
#define _COMPONENT ACPI_EXECUTER
|
||||
@ -347,8 +345,8 @@ AcpiExSystemReleaseMutex (
|
||||
*/
|
||||
if (ObjDesc->Mutex.Semaphore == AcpiGbl_GlobalLockSemaphore)
|
||||
{
|
||||
AcpiEvReleaseGlobalLock ();
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
Status = AcpiEvReleaseGlobalLock ();
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiOsSignalSemaphore (ObjDesc->Mutex.Semaphore, 1);
|
||||
@ -454,7 +452,7 @@ AcpiExSystemResetEvent (
|
||||
Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore);
|
||||
(void) AcpiOsDeleteSemaphore (ObjDesc->Event.Semaphore);
|
||||
ObjDesc->Event.Semaphore = TempSemaphore;
|
||||
}
|
||||
|
||||
|
@ -116,8 +116,6 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acnamesp.h"
|
||||
#include "achware.h"
|
||||
|
||||
#define _COMPONENT ACPI_HARDWARE
|
||||
ACPI_MODULE_NAME ("hwsleep")
|
||||
@ -148,11 +146,13 @@ AcpiSetFirmwareWakingVector (
|
||||
|
||||
if (AcpiGbl_CommonFACS.VectorWidth == 32)
|
||||
{
|
||||
*(UINT32 *) AcpiGbl_CommonFACS.FirmwareWakingVector = (UINT32) PhysicalAddress;
|
||||
*(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector))
|
||||
= (UINT32) PhysicalAddress;
|
||||
}
|
||||
else
|
||||
{
|
||||
*AcpiGbl_CommonFACS.FirmwareWakingVector = PhysicalAddress;
|
||||
*AcpiGbl_CommonFACS.FirmwareWakingVector
|
||||
= PhysicalAddress;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
@ -190,11 +190,13 @@ AcpiGetFirmwareWakingVector (
|
||||
|
||||
if (AcpiGbl_CommonFACS.VectorWidth == 32)
|
||||
{
|
||||
*PhysicalAddress = *(UINT32 *) AcpiGbl_CommonFACS.FirmwareWakingVector;
|
||||
*PhysicalAddress = (ACPI_PHYSICAL_ADDRESS)
|
||||
*(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector));
|
||||
}
|
||||
else
|
||||
{
|
||||
*PhysicalAddress = *AcpiGbl_CommonFACS.FirmwareWakingVector;
|
||||
*PhysicalAddress =
|
||||
*AcpiGbl_CommonFACS.FirmwareWakingVector;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
@ -231,7 +233,7 @@ AcpiEnterSleepStatePrep (
|
||||
/*
|
||||
* _PSW methods could be run here to enable wake-on keyboard, LAN, etc.
|
||||
*/
|
||||
Status = AcpiHwGetSleepTypeData (SleepState,
|
||||
Status = AcpiGetSleepTypeData (SleepState,
|
||||
&AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
@ -281,11 +283,13 @@ ACPI_STATUS
|
||||
AcpiEnterSleepState (
|
||||
UINT8 SleepState)
|
||||
{
|
||||
UINT16 PM1AControl;
|
||||
UINT16 PM1BControl;
|
||||
UINT32 PM1AControl;
|
||||
UINT32 PM1BControl;
|
||||
ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo;
|
||||
ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo;
|
||||
UINT32 InValue;
|
||||
UINT32 Retry;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("AcpiEnterSleepState");
|
||||
@ -294,7 +298,7 @@ AcpiEnterSleepState (
|
||||
if ((AcpiGbl_SleepTypeA > 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));
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
|
||||
}
|
||||
@ -305,16 +309,39 @@ AcpiEnterSleepState (
|
||||
|
||||
/* Clear wake status */
|
||||
|
||||
AcpiHwBitRegisterWrite (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
||||
AcpiHwClearAcpiStatus();
|
||||
Status = AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
||||
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 */
|
||||
|
||||
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));
|
||||
|
||||
/* Clear SLP_EN and SLP_TYP fields */
|
||||
@ -329,8 +356,17 @@ AcpiEnterSleepState (
|
||||
|
||||
/* Write #1: fill in SLP_TYP data */
|
||||
|
||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl);
|
||||
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);
|
||||
}
|
||||
|
||||
/* Insert SLP_ENABLE bit */
|
||||
|
||||
@ -338,36 +374,63 @@ AcpiEnterSleepState (
|
||||
PM1BControl |= SleepEnableRegInfo->AccessBitMask;
|
||||
|
||||
/* Write #2: SLP_TYP + SLP_EN */
|
||||
ACPI_FLUSH_CPU_CACHE();
|
||||
|
||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1A_CONTROL, PM1AControl);
|
||||
AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1B_CONTROL, PM1BControl);
|
||||
ACPI_FLUSH_CPU_CACHE ();
|
||||
|
||||
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.
|
||||
*/
|
||||
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,
|
||||
SleepEnableRegInfo->AccessBitMask);
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_LOCK, ACPI_REGISTER_PM1_CONTROL,
|
||||
SleepEnableRegInfo->AccessBitMask);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
/* Wait until we enter sleep state */
|
||||
|
||||
/* Spin until we wake */
|
||||
Retry = 1000;
|
||||
while (!AcpiHwBitRegisterRead (ACPI_BITREG_WAKE_STATUS, ACPI_MTX_LOCK))
|
||||
do
|
||||
{
|
||||
/*
|
||||
* Some BIOSes don't set WAK_STS at all,
|
||||
* give up waiting for wakeup if we time out.
|
||||
*/
|
||||
if (Retry-- == 0) {
|
||||
break; /* giving up */
|
||||
}
|
||||
}
|
||||
Status = AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &InValue, ACPI_MTX_LOCK);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
@ -424,7 +487,14 @@ AcpiLeaveSleepState (
|
||||
|
||||
/* _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 "amlcode.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acdebug.h"
|
||||
#include "acinterp.h"
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME ("psparse")
|
||||
|
||||
|
||||
UINT32 AcpiGbl_Depth = 0;
|
||||
extern UINT32 AcpiGbl_ScopeDepth;
|
||||
static UINT32 AcpiGbl_Depth = 0;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -267,13 +265,13 @@ AcpiPsFindObject (
|
||||
* PARAMETERS: WalkState - Current State
|
||||
* Op - Op to complete
|
||||
*
|
||||
* RETURN: TRUE if Op and subtree was deleted
|
||||
* RETURN: None.
|
||||
*
|
||||
* DESCRIPTION: Perform any cleanup at the completion of an Op.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
BOOLEAN
|
||||
void
|
||||
AcpiPsCompleteThisOp (
|
||||
ACPI_WALK_STATE *WalkState,
|
||||
ACPI_PARSE_OBJECT *Op)
|
||||
@ -292,7 +290,7 @@ AcpiPsCompleteThisOp (
|
||||
|
||||
if (!Op)
|
||||
{
|
||||
return_VALUE (TRUE);
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
/* Delete this op and the subtree below it if asked to */
|
||||
@ -302,13 +300,13 @@ AcpiPsCompleteThisOp (
|
||||
{
|
||||
/* 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
|
||||
* with a return value op (placeholder op)
|
||||
*/
|
||||
ParentInfo = AcpiPsGetOpcodeInfo (Op->Parent->Opcode);
|
||||
ParentInfo = AcpiPsGetOpcodeInfo (Op->Common.Parent->Common.AmlOpcode);
|
||||
|
||||
switch (ParentInfo->Class)
|
||||
{
|
||||
@ -324,7 +322,7 @@ AcpiPsCompleteThisOp (
|
||||
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
||||
if (!ReplacementOp)
|
||||
{
|
||||
return_VALUE (FALSE);
|
||||
return_VOID;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -334,37 +332,35 @@ AcpiPsCompleteThisOp (
|
||||
* These opcodes contain TermArg operands. The current
|
||||
* op must be replaced by a placeholder return op
|
||||
*/
|
||||
if ((Op->Parent->Opcode == AML_REGION_OP) ||
|
||||
(Op->Parent->Opcode == AML_DATA_REGION_OP) ||
|
||||
(Op->Parent->Opcode == AML_BUFFER_OP) ||
|
||||
(Op->Parent->Opcode == AML_PACKAGE_OP) ||
|
||||
(Op->Parent->Opcode == AML_VAR_PACKAGE_OP))
|
||||
if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) ||
|
||||
(Op->Common.Parent->Common.AmlOpcode == AML_DATA_REGION_OP) ||
|
||||
(Op->Common.Parent->Common.AmlOpcode == AML_BUFFER_OP) ||
|
||||
(Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) ||
|
||||
(Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))
|
||||
{
|
||||
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
||||
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))
|
||||
|
||||
{
|
||||
if ((Op->Opcode == AML_BUFFER_OP) ||
|
||||
(Op->Opcode == AML_PACKAGE_OP) ||
|
||||
(Op->Opcode == AML_VAR_PACKAGE_OP))
|
||||
if ((Op->Common.AmlOpcode == AML_BUFFER_OP) ||
|
||||
(Op->Common.AmlOpcode == AML_PACKAGE_OP) ||
|
||||
(Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP))
|
||||
{
|
||||
ReplacementOp = AcpiPsAllocOp (Op->Opcode);
|
||||
ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode);
|
||||
if (!ReplacementOp)
|
||||
{
|
||||
return_VALUE (FALSE);
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
((ACPI_PARSE2_OBJECT *) ReplacementOp)->Data =
|
||||
((ACPI_PARSE2_OBJECT *) Op)->Data;
|
||||
((ACPI_PARSE2_OBJECT *) ReplacementOp)->Length =
|
||||
((ACPI_PARSE2_OBJECT *) Op)->Length;
|
||||
ReplacementOp->Named.Data = Op->Named.Data;
|
||||
ReplacementOp->Named.Length = Op->Named.Length;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -373,28 +369,28 @@ AcpiPsCompleteThisOp (
|
||||
ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP);
|
||||
if (!ReplacementOp)
|
||||
{
|
||||
return_VALUE (FALSE);
|
||||
return_VOID;
|
||||
}
|
||||
}
|
||||
|
||||
/* We must unlink this op from the parent tree */
|
||||
|
||||
Prev = Op->Parent->Value.Arg;
|
||||
Prev = Op->Common.Parent->Common.Value.Arg;
|
||||
if (Prev == Op)
|
||||
{
|
||||
/* This op is the first in the list */
|
||||
|
||||
if (ReplacementOp)
|
||||
{
|
||||
ReplacementOp->Parent = Op->Parent;
|
||||
ReplacementOp->Value.Arg = NULL;
|
||||
ReplacementOp->Node = Op->Node;
|
||||
Op->Parent->Value.Arg = ReplacementOp;
|
||||
ReplacementOp->Next = Op->Next;
|
||||
ReplacementOp->Common.Parent = Op->Common.Parent;
|
||||
ReplacementOp->Common.Value.Arg = NULL;
|
||||
ReplacementOp->Common.Node = Op->Common.Node;
|
||||
Op->Common.Parent->Common.Value.Arg = ReplacementOp;
|
||||
ReplacementOp->Common.Next = Op->Common.Next;
|
||||
}
|
||||
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 */
|
||||
|
||||
Next = Prev->Next;
|
||||
Next = Prev->Common.Next;
|
||||
if (Next == Op)
|
||||
{
|
||||
if (ReplacementOp)
|
||||
{
|
||||
ReplacementOp->Parent = Op->Parent;
|
||||
ReplacementOp->Value.Arg = NULL;
|
||||
ReplacementOp->Node = Op->Node;
|
||||
Prev->Next = ReplacementOp;
|
||||
ReplacementOp->Next = Op->Next;
|
||||
ReplacementOp->Common.Parent = Op->Common.Parent;
|
||||
ReplacementOp->Common.Value.Arg = NULL;
|
||||
ReplacementOp->Common.Node = Op->Common.Node;
|
||||
Prev->Common.Next = ReplacementOp;
|
||||
ReplacementOp->Common.Next = Op->Common.Next;
|
||||
Next = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
Prev->Next = Op->Next;
|
||||
Prev->Common.Next = Op->Common.Next;
|
||||
Next = NULL;
|
||||
}
|
||||
}
|
||||
@ -431,13 +427,13 @@ AcpiPsCompleteThisOp (
|
||||
|
||||
AcpiPsDeleteParseTree (Op);
|
||||
|
||||
return_VALUE (TRUE);
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
return_VALUE (FALSE);
|
||||
return_VOID;
|
||||
|
||||
#else
|
||||
return (FALSE);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -537,7 +533,7 @@ AcpiPsNextParseState (
|
||||
Status = AE_CTRL_TRANSFER;
|
||||
WalkState->PrevOp = 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? */
|
||||
|
||||
@ -585,6 +581,11 @@ AcpiPsParseLoop (
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR ("PsParseLoop", WalkState);
|
||||
|
||||
if (WalkState->DescendingCallback == NULL)
|
||||
{
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
|
||||
ParserState = &WalkState->ParserState;
|
||||
WalkState->ArgTypes = 0;
|
||||
@ -601,8 +602,8 @@ AcpiPsParseLoop (
|
||||
* was just completed
|
||||
*/
|
||||
if ((ParserState->Scope->ParseScope.Op) &&
|
||||
((ParserState->Scope->ParseScope.Op->Opcode == AML_IF_OP) ||
|
||||
(ParserState->Scope->ParseScope.Op->Opcode == AML_WHILE_OP)) &&
|
||||
((ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_IF_OP) ||
|
||||
(ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_WHILE_OP)) &&
|
||||
(WalkState->ControlState) &&
|
||||
(WalkState->ControlState->Common.State ==
|
||||
ACPI_CONTROL_PREDICATE_EXECUTING))
|
||||
@ -649,13 +650,13 @@ AcpiPsParseLoop (
|
||||
*/
|
||||
while ((ParserState->Aml < ParserState->AmlEnd) || (Op))
|
||||
{
|
||||
AmlOpStart = ParserState->Aml;
|
||||
if (!Op)
|
||||
{
|
||||
/* Get the next opcode from the AML stream */
|
||||
|
||||
AmlOpStart = ParserState->Aml;
|
||||
WalkState->AmlOffset = ParserState->Aml - ParserState->AmlStart;
|
||||
WalkState->Opcode = AcpiPsPeekOpcode (ParserState);
|
||||
WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, ParserState->AmlStart);
|
||||
WalkState->Opcode = AcpiPsPeekOpcode (ParserState);
|
||||
|
||||
/*
|
||||
* First cut to determine what we have found:
|
||||
@ -704,8 +705,8 @@ AcpiPsParseLoop (
|
||||
|
||||
if (WalkState->OpInfo->Flags & AML_NAMED)
|
||||
{
|
||||
PreOp.Value.Arg = NULL;
|
||||
PreOp.Opcode = WalkState->Opcode;
|
||||
PreOp.Common.Value.Arg = NULL;
|
||||
PreOp.Common.AmlOpcode = WalkState->Opcode;
|
||||
|
||||
while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)
|
||||
{
|
||||
@ -720,44 +721,41 @@ AcpiPsParseLoop (
|
||||
|
||||
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))
|
||||
{
|
||||
/*
|
||||
* 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",
|
||||
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;
|
||||
}
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "During name lookup/catalog, %s\n",
|
||||
AcpiFormatException (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++;
|
||||
|
||||
if (Op->Opcode == AML_REGION_OP)
|
||||
if (Op->Common.AmlOpcode == AML_REGION_OP)
|
||||
{
|
||||
/*
|
||||
* Defer final parsing of an OperationRegion body,
|
||||
@ -771,8 +769,8 @@ AcpiPsParseLoop (
|
||||
*
|
||||
* (Length is unknown until parse of the body complete)
|
||||
*/
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = AmlOpStart;
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = 0;
|
||||
Op->Named.Data = AmlOpStart;
|
||||
Op->Named.Length = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -792,8 +790,8 @@ AcpiPsParseLoop (
|
||||
* Backup to beginning of CreateXXXfield declaration
|
||||
* BodyLength is unknown until we parse the body
|
||||
*/
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = AmlOpStart;
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = 0;
|
||||
Op->Named.Data = AmlOpStart;
|
||||
Op->Named.Length = 0;
|
||||
}
|
||||
|
||||
AcpiPsAppendArg (AcpiPsGetParentScope (ParserState), Op);
|
||||
@ -821,13 +819,14 @@ AcpiPsParseLoop (
|
||||
}
|
||||
}
|
||||
|
||||
Op->AmlOffset = WalkState->AmlOffset;
|
||||
Op->Common.AmlOffset = WalkState->AmlOffset;
|
||||
|
||||
if (WalkState->OpInfo)
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
|
||||
"Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n",
|
||||
Op->Opcode, WalkState->OpInfo->Name, Op, ParserState->Aml, Op->AmlOffset));
|
||||
"Opcode %4.4hX [%s] Op %p Aml %p AmlOffset %5.5X\n",
|
||||
Op->Common.AmlOpcode, WalkState->OpInfo->Name,
|
||||
Op, ParserState->Aml, Op->Common.AmlOffset));
|
||||
}
|
||||
}
|
||||
|
||||
@ -840,7 +839,7 @@ AcpiPsParseLoop (
|
||||
{
|
||||
/* Get arguments */
|
||||
|
||||
switch (Op->Opcode)
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
|
||||
case AML_WORD_OP: /* AML_WORDDATA_ARG */
|
||||
@ -867,20 +866,21 @@ AcpiPsParseLoop (
|
||||
|
||||
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,
|
||||
GET_CURRENT_ARG_TYPE (WalkState->ArgTypes),
|
||||
&WalkState->ArgCount);
|
||||
if (Arg)
|
||||
{
|
||||
Arg->AmlOffset = WalkState->AmlOffset;
|
||||
Arg->Common.AmlOffset = WalkState->AmlOffset;
|
||||
AcpiPsAppendArg (Op, Arg);
|
||||
}
|
||||
|
||||
INCREMENT_ARG_LIST (WalkState->ArgTypes);
|
||||
}
|
||||
|
||||
switch (Op->Opcode)
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_METHOD_OP:
|
||||
|
||||
@ -891,9 +891,8 @@ AcpiPsParseLoop (
|
||||
* because we don't have enough info in the first pass
|
||||
* to parse them correctly.
|
||||
*/
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = ParserState->Aml;
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->PkgEnd -
|
||||
ParserState->Aml);
|
||||
Op->Named.Data = ParserState->Aml;
|
||||
Op->Named.Length = (UINT32) (ParserState->PkgEnd - ParserState->Aml);
|
||||
/*
|
||||
* Skip body of method. For OpRegions, we must continue
|
||||
* parsing because the opregion is not a standalone
|
||||
@ -907,8 +906,8 @@ AcpiPsParseLoop (
|
||||
case AML_PACKAGE_OP:
|
||||
case AML_VAR_PACKAGE_OP:
|
||||
|
||||
if ((Op->Parent) &&
|
||||
(Op->Parent->Opcode == AML_NAME_OP) &&
|
||||
if ((Op->Common.Parent) &&
|
||||
(Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) &&
|
||||
(WalkState->DescendingCallback != AcpiDsExecBeginOp))
|
||||
{
|
||||
/*
|
||||
@ -916,9 +915,8 @@ AcpiPsParseLoop (
|
||||
* because we don't have enough info in the first pass
|
||||
* to parse them correctly.
|
||||
*/
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Data = AmlOpStart;
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->PkgEnd -
|
||||
AmlOpStart);
|
||||
Op->Named.Data = AmlOpStart;
|
||||
Op->Named.Length = (UINT32) (ParserState->PkgEnd - AmlOpStart);
|
||||
/*
|
||||
* Skip body
|
||||
*/
|
||||
@ -934,6 +932,10 @@ AcpiPsParseLoop (
|
||||
WalkState->ControlState->Control.PackageEnd = ParserState->PkgEnd;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
/* No action for all other opcodes */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -945,14 +947,18 @@ AcpiPsParseLoop (
|
||||
{
|
||||
/* 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;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* 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 (AcpiGbl_Depth)
|
||||
@ -960,7 +966,7 @@ AcpiPsParseLoop (
|
||||
AcpiGbl_Depth--;
|
||||
}
|
||||
|
||||
if (Op->Opcode == AML_REGION_OP)
|
||||
if (Op->Common.AmlOpcode == AML_REGION_OP)
|
||||
{
|
||||
/*
|
||||
* Skip parsing of control method or opregion body,
|
||||
@ -970,8 +976,7 @@ AcpiPsParseLoop (
|
||||
* Completed parsing an OpRegion declaration, we now
|
||||
* know the length.
|
||||
*/
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml -
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Data);
|
||||
Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -983,8 +988,7 @@ AcpiPsParseLoop (
|
||||
*
|
||||
* BodyLength is unknown until we parse the body
|
||||
*/
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Length = (UINT32) (ParserState->Aml -
|
||||
((ACPI_PARSE2_OBJECT * ) Op)->Data);
|
||||
Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data);
|
||||
}
|
||||
|
||||
/* This op complete, notify the dispatcher */
|
||||
@ -992,7 +996,7 @@ AcpiPsParseLoop (
|
||||
if (WalkState->AscendingCallback != NULL)
|
||||
{
|
||||
WalkState->Op = Op;
|
||||
WalkState->Opcode = Op->Opcode;
|
||||
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||
|
||||
Status = WalkState->AscendingCallback (WalkState);
|
||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||
@ -1010,12 +1014,10 @@ AcpiPsParseLoop (
|
||||
*/
|
||||
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))
|
||||
{
|
||||
Op = NULL;
|
||||
}
|
||||
AcpiPsCompleteThisOp (WalkState, Op);
|
||||
Op = NULL;
|
||||
|
||||
switch (Status)
|
||||
{
|
||||
@ -1038,8 +1040,8 @@ AcpiPsParseLoop (
|
||||
AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount);
|
||||
|
||||
WalkState->Op = Op;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
WalkState->Opcode = Op->Opcode;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||
|
||||
Status = WalkState->AscendingCallback (WalkState);
|
||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||
@ -1055,7 +1057,7 @@ AcpiPsParseLoop (
|
||||
|
||||
/* 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);
|
||||
}
|
||||
@ -1063,8 +1065,8 @@ AcpiPsParseLoop (
|
||||
/* Close this iteration of the While loop */
|
||||
|
||||
WalkState->Op = Op;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
WalkState->Opcode = Op->Opcode;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||
|
||||
Status = WalkState->AscendingCallback (WalkState);
|
||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||
@ -1150,8 +1152,8 @@ AcpiPsParseLoop (
|
||||
if (WalkState->AscendingCallback != NULL)
|
||||
{
|
||||
WalkState->Op = Op;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Opcode);
|
||||
WalkState->Opcode = Op->Opcode;
|
||||
WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
|
||||
WalkState->Opcode = Op->Common.AmlOpcode;
|
||||
|
||||
Status = WalkState->AscendingCallback (WalkState);
|
||||
Status = AcpiPsNextParseState (WalkState, Op, Status);
|
||||
@ -1315,7 +1317,14 @@ AcpiPsParseAml (
|
||||
*/
|
||||
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 */
|
||||
@ -1339,8 +1348,11 @@ AcpiPsParseAml (
|
||||
* If the method return value is not used by the parent,
|
||||
* The object is deleted
|
||||
*/
|
||||
AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc);
|
||||
WalkState->WalkType |= ACPI_WALK_METHOD_RESTART;
|
||||
Status = AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
WalkState->WalkType |= ACPI_WALK_METHOD_RESTART;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1388,7 +1400,7 @@ AcpiPsParseAml (
|
||||
|
||||
AcpiUtRemoveReference (EffectiveReturnDesc);
|
||||
AcpiExReleaseAllMutexes (Thread);
|
||||
AcpiUtDeleteGenericState ((ACPI_GENERIC_STATE *) Thread);
|
||||
AcpiUtDeleteGenericState (ACPI_CAST_PTR (ACPI_GENERIC_STATE, Thread));
|
||||
AcpiGbl_CurrentWalkList = PrevWalkList;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
@ -172,11 +172,11 @@ AcpiRsCreateResourceList (
|
||||
* Pass the ByteStreamBuffer into a module that can calculate
|
||||
* the buffer size needed for the linked list
|
||||
*/
|
||||
Status = AcpiRsCalculateListLength (ByteStreamStart, ByteStreamBufferLength,
|
||||
Status = AcpiRsGetListLength (ByteStreamStart, ByteStreamBufferLength,
|
||||
&ListSizeNeeded);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Status=%X ListSizeNeeded=%X\n",
|
||||
Status, ListSizeNeeded));
|
||||
Status, (UINT32) ListSizeNeeded));
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -200,7 +200,7 @@ AcpiRsCreateResourceList (
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -253,14 +253,14 @@ AcpiRsCreatePciRoutingTable (
|
||||
/*
|
||||
* Get the required buffer length
|
||||
*/
|
||||
Status = AcpiRsCalculatePciRoutingTableLength (PackageObject,
|
||||
Status = AcpiRsGetPciRoutingTableLength (PackageObject,
|
||||
&BufferSizeNeeded);
|
||||
if (ACPI_FAILURE (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 */
|
||||
|
||||
@ -277,7 +277,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
TopObjectList = PackageObject->Package.Elements;
|
||||
NumberOfElements = PackageObject->Package.Count;
|
||||
Buffer = OutputBuffer->Pointer;
|
||||
UserPrt = (ACPI_PCI_ROUTING_TABLE *) Buffer;
|
||||
UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer);
|
||||
|
||||
for (Index = 0; Index < NumberOfElements; Index++)
|
||||
{
|
||||
@ -288,7 +288,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
* be zero because we cleared the return buffer earlier
|
||||
*/
|
||||
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.
|
||||
@ -311,14 +311,14 @@ AcpiRsCreatePciRoutingTable (
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
||||
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
@ -327,14 +327,14 @@ AcpiRsCreatePciRoutingTable (
|
||||
*/
|
||||
SubObjectList++;
|
||||
|
||||
if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type)
|
||||
if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
|
||||
{
|
||||
UserPrt->Pin = (UINT32) (*SubObjectList)->Integer.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
||||
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
@ -343,7 +343,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
*/
|
||||
SubObjectList++;
|
||||
|
||||
switch ((*SubObjectList)->Common.Type)
|
||||
switch (ACPI_GET_OBJECT_TYPE (*SubObjectList))
|
||||
{
|
||||
case INTERNAL_TYPE_REFERENCE:
|
||||
|
||||
@ -362,7 +362,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
(UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer);
|
||||
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 */
|
||||
break;
|
||||
@ -393,7 +393,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
default:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
||||
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
@ -406,14 +406,14 @@ AcpiRsCreatePciRoutingTable (
|
||||
*/
|
||||
SubObjectList++;
|
||||
|
||||
if (ACPI_TYPE_INTEGER == (*SubObjectList)->Common.Type)
|
||||
if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_INTEGER)
|
||||
{
|
||||
UserPrt->SourceIndex = (UINT32) (*SubObjectList)->Integer.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Need Integer, found %s\n",
|
||||
AcpiUtGetTypeName ((*SubObjectList)->Common.Type)));
|
||||
AcpiUtGetObjectTypeName (*SubObjectList)));
|
||||
return_ACPI_STATUS (AE_BAD_DATA);
|
||||
}
|
||||
|
||||
@ -423,7 +423,7 @@ AcpiRsCreatePciRoutingTable (
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -466,11 +466,11 @@ AcpiRsCreateByteStream (
|
||||
* Pass the LinkedListBuffer into a module that calculates
|
||||
* the buffer size needed for the byte stream.
|
||||
*/
|
||||
Status = AcpiRsCalculateByteStreamLength (LinkedListBuffer,
|
||||
Status = AcpiRsGetByteStreamLength (LinkedListBuffer,
|
||||
&ByteStreamSizeNeeded);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ByteStreamSizeNeeded=%X, %s\n",
|
||||
ByteStreamSizeNeeded, AcpiFormatException (Status)));
|
||||
(UINT32) ByteStreamSizeNeeded, AcpiFormatException (Status)));
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
@ -494,7 +494,7 @@ AcpiRsCreateByteStream (
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -124,6 +124,128 @@
|
||||
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
|
||||
@ -209,10 +331,8 @@ AcpiTbGetTablePtr (
|
||||
*
|
||||
* FUNCTION: AcpiTbGetTable
|
||||
*
|
||||
* PARAMETERS: PhysicalAddress - Physical address of table to retrieve
|
||||
* *BufferPtr - If BufferPtr is valid, read data from
|
||||
* buffer rather than searching memory
|
||||
* *TableInfo - Where the table info is returned
|
||||
* PARAMETERS: Address - Physical address of table to retrieve
|
||||
* *TableInfo - Where the table info is returned
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -227,7 +347,7 @@ AcpiTbGetTable (
|
||||
{
|
||||
ACPI_TABLE_HEADER *TableHeader = NULL;
|
||||
ACPI_TABLE_HEADER *FullTable = NULL;
|
||||
UINT32 Size;
|
||||
ACPI_SIZE Size;
|
||||
UINT8 Allocation;
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
|
||||
@ -259,7 +379,7 @@ AcpiTbGetTable (
|
||||
|
||||
/* Copy the entire table (including header) to the local buffer */
|
||||
|
||||
Size = TableHeader->Length;
|
||||
Size = (ACPI_SIZE) TableHeader->Length;
|
||||
ACPI_MEMCPY (FullTable, TableHeader, Size);
|
||||
|
||||
/* Save allocation type */
|
||||
@ -314,7 +434,6 @@ AcpiTbGetTable (
|
||||
* FUNCTION: AcpiTbGetAllTables
|
||||
*
|
||||
* PARAMETERS: NumberOfTables - Number of tables to get
|
||||
* TablePtr - Input buffer pointer, optional
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
@ -331,8 +450,7 @@ AcpiTbGetTable (
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiTbGetAllTables (
|
||||
UINT32 NumberOfTables,
|
||||
ACPI_TABLE_HEADER *TablePtr)
|
||||
UINT32 NumberOfTables)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
UINT32 Index;
|
||||
@ -371,7 +489,7 @@ AcpiTbGetAllTables (
|
||||
|
||||
/* Recognize and install the table */
|
||||
|
||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
||||
Status = AcpiTbInstallTable (&TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
/*
|
||||
@ -379,11 +497,17 @@ AcpiTbGetAllTables (
|
||||
* error. Just get as many tables as we can, later we will
|
||||
* determine if there are enough tables to continue.
|
||||
*/
|
||||
AcpiTbUninstallTable (&TableInfo);
|
||||
(void) AcpiTbUninstallTable (&TableInfo);
|
||||
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
|
||||
* table to coexist with newer versions, using common access code.
|
||||
@ -405,16 +529,18 @@ AcpiTbGetAllTables (
|
||||
Status = AcpiTbGetTable (&Address, &TableInfo);
|
||||
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);
|
||||
}
|
||||
|
||||
/* Install the FACS */
|
||||
|
||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
||||
Status = AcpiTbInstallTable (&TableInfo);
|
||||
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);
|
||||
}
|
||||
|
||||
@ -425,42 +551,31 @@ AcpiTbGetAllTables (
|
||||
Status = AcpiTbBuildCommonFacs (&TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Could not convert FACS to common internal format\n"));
|
||||
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.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))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Could not get the DSDT\n"));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Install the DSDT */
|
||||
/* Set Integer Width (32/64) based upon DSDT revision */
|
||||
|
||||
Status = AcpiTbInstallTable (TablePtr, &TableInfo);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Could not install the DSDT\n"));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
AcpiUtSetIntegerWidth (AcpiGbl_DSDT->Revision);
|
||||
|
||||
/* Dump the entire DSDT */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES,
|
||||
"Hex dump of entire DSDT, size %d (0x%X)\n",
|
||||
AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length));
|
||||
"Hex dump of entire DSDT, size %d (0x%X), Integer width = %d\n",
|
||||
AcpiGbl_DSDT->Length, AcpiGbl_DSDT->Length, AcpiGbl_IntegerBitWidth));
|
||||
ACPI_DUMP_BUFFER ((UINT8 *) AcpiGbl_DSDT, AcpiGbl_DSDT->Length);
|
||||
|
||||
/* Always delete the RSDP mapping, we are done with it */
|
||||
@ -549,7 +664,7 @@ AcpiTbVerifyRsdp (
|
||||
|
||||
/* 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.Allocation = ACPI_MEM_MAPPED;
|
||||
TableInfo.BasePointer = Rsdp;
|
||||
@ -564,7 +679,7 @@ AcpiTbVerifyRsdp (
|
||||
|
||||
/* 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);
|
||||
|
||||
|
||||
@ -633,7 +748,7 @@ ACPI_STATUS
|
||||
AcpiTbValidateRsdt (
|
||||
ACPI_TABLE_HEADER *TablePtr)
|
||||
{
|
||||
UINT32 NoMatch;
|
||||
int NoMatch;
|
||||
|
||||
|
||||
ACPI_FUNCTION_NAME ("TbValidateRsdt");
|
||||
@ -663,8 +778,9 @@ AcpiTbValidateRsdt (
|
||||
ACPI_DUMP_BUFFER (AcpiGbl_RSDP, 20);
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR,
|
||||
"RSDT/XSDT signature at %X is invalid\n",
|
||||
AcpiGbl_RSDP->RsdtPhysicalAddress));
|
||||
"RSDT/XSDT signature at %X (%p) is invalid\n",
|
||||
AcpiGbl_RSDP->RsdtPhysicalAddress,
|
||||
(void *) (NATIVE_UINT) AcpiGbl_RSDP->RsdtPhysicalAddress));
|
||||
|
||||
return (AE_BAD_SIGNATURE);
|
||||
}
|
||||
@ -691,7 +807,7 @@ ACPI_STATUS
|
||||
AcpiTbGetTablePointer (
|
||||
ACPI_POINTER *Address,
|
||||
UINT32 Flags,
|
||||
UINT32 *Size,
|
||||
ACPI_SIZE *Size,
|
||||
ACPI_TABLE_HEADER **TablePtr)
|
||||
{
|
||||
ACPI_STATUS Status = AE_OK;
|
||||
@ -720,6 +836,9 @@ AcpiTbGetTablePointer (
|
||||
*TablePtr = Address->Pointer.Logical;
|
||||
*Size = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -737,6 +856,9 @@ AcpiTbGetTablePointer (
|
||||
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
|
||||
default:
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
}
|
||||
|
||||
@ -768,27 +890,23 @@ AcpiTbGetTableRsdt (
|
||||
ACPI_FUNCTION_TRACE ("TbGetTableRsdt");
|
||||
|
||||
|
||||
/*
|
||||
* 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 */
|
||||
/* Get the RSDT/XSDT from the RSDP */
|
||||
|
||||
AcpiTbGetRsdtAddress (&Address);
|
||||
Status = AcpiTbGetTable (&Address, &TableInfo);
|
||||
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)));
|
||||
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 */
|
||||
|
||||
Status = AcpiTbValidateRsdt (TableInfo.Pointer);
|
||||
|
@ -118,11 +118,7 @@
|
||||
#define DEFINE_ACPI_GLOBALS
|
||||
|
||||
#include "acpi.h"
|
||||
#include "acevents.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acinterp.h"
|
||||
#include "amlcode.h"
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_UTILITIES
|
||||
ACPI_MODULE_NAME ("utglobal")
|
||||
@ -245,7 +241,6 @@ UINT32 AcpiGbl_NestingLevel = 0;
|
||||
BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
|
||||
BOOLEAN AcpiGbl_MethodExecuting = FALSE;
|
||||
NATIVE_CHAR *AcpiGbl_DbDisasmIndent = "....";
|
||||
ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr = NULL;
|
||||
|
||||
/* System flags */
|
||||
|
||||
@ -282,15 +277,15 @@ const NATIVE_CHAR *AcpiGbl_DbSleepStates[ACPI_NUM_SLEEP_STATES] = {
|
||||
|
||||
const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
|
||||
{
|
||||
{"_GPE", INTERNAL_TYPE_DEF_ANY},
|
||||
{"_PR_", INTERNAL_TYPE_DEF_ANY},
|
||||
{"_SB_", ACPI_TYPE_DEVICE},
|
||||
{"_SI_", INTERNAL_TYPE_DEF_ANY},
|
||||
{"_TZ_", INTERNAL_TYPE_DEF_ANY},
|
||||
{"_GPE", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||
{"_PR_", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||
{"_SB_", ACPI_TYPE_DEVICE, NULL},
|
||||
{"_SI_", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||
{"_TZ_", INTERNAL_TYPE_DEF_ANY, NULL},
|
||||
{"_REV", ACPI_TYPE_INTEGER, "2"},
|
||||
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
|
||||
{"_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 */
|
||||
|
||||
const NATIVE_CHAR AcpiGbl_HexToAscii[] =
|
||||
static const NATIVE_CHAR AcpiGbl_HexToAscii[] =
|
||||
{'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 (
|
||||
ACPI_INTEGER Integer,
|
||||
UINT32 Position)
|
||||
@ -463,7 +458,7 @@ ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
|
||||
|
||||
/* Region type decoding */
|
||||
|
||||
const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
|
||||
static const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
|
||||
{
|
||||
"SystemMemory",
|
||||
"SystemIO",
|
||||
@ -509,7 +504,7 @@ AcpiUtGetRegionName (
|
||||
|
||||
/* Event type decoding */
|
||||
|
||||
const NATIVE_CHAR *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
|
||||
static const NATIVE_CHAR *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
|
||||
{
|
||||
"PM_Timer",
|
||||
"GlobalLock",
|
||||
@ -533,7 +528,7 @@ AcpiUtGetEventName (
|
||||
}
|
||||
|
||||
|
||||
#ifdef ACPI_DEBUG
|
||||
#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER)
|
||||
|
||||
/*
|
||||
* Strings and procedures used for debug only
|
||||
@ -566,6 +561,8 @@ AcpiUtGetMutexName (
|
||||
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 */
|
||||
|
||||
const NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] =
|
||||
static const NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] =
|
||||
{
|
||||
"skip",
|
||||
"?access?"
|
||||
}; /* FE = Field Element */
|
||||
|
||||
|
||||
const NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] =
|
||||
static const NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] =
|
||||
{
|
||||
"Error",
|
||||
"MTR",
|
||||
@ -670,7 +686,7 @@ const NATIVE_CHAR *AcpiGbl_MatchOps[NUM_MATCH_OPS] =
|
||||
|
||||
/* Access type decoding */
|
||||
|
||||
const NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] =
|
||||
static const NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] =
|
||||
{
|
||||
"AnyAcc",
|
||||
"ByteAcc",
|
||||
@ -683,14 +699,13 @@ const NATIVE_CHAR *AcpiGbl_AccessTypes[NUM_ACCESS_TYPES] =
|
||||
|
||||
/* Update rule decoding */
|
||||
|
||||
const NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] =
|
||||
static const NATIVE_CHAR *AcpiGbl_UpdateRules[NUM_UPDATE_RULES] =
|
||||
{
|
||||
"Preserve",
|
||||
"WriteAsOnes",
|
||||
"WriteAsZeros"
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif /* Future use */
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
@ -772,6 +787,9 @@ AcpiUtAllocateOwnerId (
|
||||
AcpiGbl_NextMethodOwnerId = ACPI_FIRST_METHOD_ID;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
|
||||
@ -804,15 +822,15 @@ AcpiUtInitGlobals (
|
||||
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_PSNODE].LinkOffset = (UINT16) ACPI_PTR_DIFF (&(((ACPI_PARSE_OBJECT *) NULL)->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].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_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_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_STATE].ObjectSize = sizeof (ACPI_GENERIC_STATE);
|
||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].ObjectSize = sizeof (ACPI_PARSE_OBJECT);
|
||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE_EXT].ObjectSize = sizeof (ACPI_PARSE2_OBJECT);
|
||||
AcpiGbl_MemoryLists[ACPI_MEM_LIST_PSNODE].ObjectSize = sizeof (ACPI_PARSE_OBJ_COMMON);
|
||||
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_WALK].ObjectSize = sizeof (ACPI_WALK_STATE);
|
||||
|
||||
@ -855,6 +873,7 @@ AcpiUtInitGlobals (
|
||||
|
||||
AcpiGbl_SysNotify.Handler = NULL;
|
||||
AcpiGbl_DrvNotify.Handler = NULL;
|
||||
AcpiGbl_InitHandler = NULL;
|
||||
|
||||
/* Global "typed" ACPI table pointers */
|
||||
|
||||
@ -904,7 +923,7 @@ AcpiUtInitGlobals (
|
||||
|
||||
|
||||
#ifdef ACPI_DEBUG
|
||||
AcpiGbl_LowestStackPointer = ACPI_UINT32_MAX;
|
||||
AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX;
|
||||
#endif
|
||||
|
||||
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;
|
||||
int error;
|
||||
caddr_t acpi_dsdt, p;
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
char *debugpoint;
|
||||
#endif
|
||||
@ -260,17 +259,6 @@ acpi_identify(driver_t *driver, device_t parent)
|
||||
}
|
||||
#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())) {
|
||||
printf("ACPI: table load failed: %s\n", AcpiFormatException(error));
|
||||
return_VOID;
|
||||
@ -1335,8 +1323,8 @@ acpi_SetSleepState(struct acpi_softc *sc, int state)
|
||||
case ACPI_STATE_S2:
|
||||
case ACPI_STATE_S3:
|
||||
case ACPI_STATE_S4:
|
||||
if (ACPI_FAILURE(status = AcpiHwGetSleepTypeData((UINT8)state, &TypeA, &TypeB))) {
|
||||
device_printf(sc->acpi_dev, "AcpiHwGetSleepTypeData failed - %s\n", AcpiFormatException(status));
|
||||
if (ACPI_FAILURE(status = AcpiGetSleepTypeData((UINT8)state, &TypeA, &TypeB))) {
|
||||
device_printf(sc->acpi_dev, "AcpiGetSleepTypeData failed - %s\n", AcpiFormatException(status));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1863,11 +1851,11 @@ static struct debugtag dbg_level[] = {
|
||||
{"ACPI_LV_MUTEX", ACPI_LV_MUTEX},
|
||||
{"ACPI_LV_INIT", ACPI_LV_INIT},
|
||||
{"ACPI_LV_ALL", ACPI_LV_ALL},
|
||||
{"ACPI_DB_AML_DISASSEMBLE", ACPI_DB_AML_DISASSEMBLE},
|
||||
{"ACPI_DB_VERBOSE_INFO", ACPI_DB_VERBOSE_INFO},
|
||||
{"ACPI_DB_FULL_TABLES", ACPI_DB_FULL_TABLES},
|
||||
{"ACPI_DB_EVENTS", ACPI_DB_EVENTS},
|
||||
{"ACPI_DB_VERBOSE", ACPI_DB_VERBOSE},
|
||||
{"ACPI_LV_AML_DISASSEMBLE", ACPI_LV_AML_DISASSEMBLE},
|
||||
{"ACPI_LV_VERBOSE_INFO", ACPI_LV_VERBOSE_INFO},
|
||||
{"ACPI_LV_FULL_TABLES", ACPI_LV_FULL_TABLES},
|
||||
{"ACPI_LV_EVENTS", ACPI_LV_EVENTS},
|
||||
{"ACPI_LV_VERBOSE", ACPI_LV_VERBOSE},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
|
@ -58,6 +58,7 @@ AcpiEnterSleepStateS4Bios (
|
||||
{
|
||||
ACPI_OBJECT_LIST ArgList;
|
||||
ACPI_OBJECT Arg;
|
||||
UINT32 Value;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("AcpiEnterSleepStateS4Bios");
|
||||
@ -77,7 +78,7 @@ AcpiEnterSleepStateS4Bios (
|
||||
|
||||
/* clear wake status */
|
||||
|
||||
AcpiHwBitRegisterWrite (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
||||
AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1, ACPI_MTX_LOCK);
|
||||
|
||||
ACPI_DISABLE_IRQS ();
|
||||
|
||||
@ -92,8 +93,9 @@ AcpiEnterSleepStateS4Bios (
|
||||
{
|
||||
AcpiOsStall(1000000);
|
||||
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();
|
||||
|
||||
@ -102,42 +104,3 @@ AcpiEnterSleepStateS4Bios (
|
||||
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+= OsdDebug.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+= device_if.h bus_if.h pci_if.h pcib_if.h isa_if.h
|
||||
.if ACPI_NO_SEMAPHORES
|
||||
|
@ -38,7 +38,7 @@
|
||||
|
||||
#include <dev/acpica/acpiio.h>
|
||||
|
||||
#include <contrib/dev/acpica/acgcc.h>
|
||||
#include <contrib/dev/acpica/acfreebsd.h>
|
||||
#include <contrib/dev/acpica/actypes.h>
|
||||
|
||||
#define ACPIDEV "/dev/acpi"
|
||||
|
Loading…
Reference in New Issue
Block a user